我通过了 LPIC-305
目录
很高兴认识你,我是白坂,系统解决方案部门的肌肉训练工程师。
夏天正式开始了,又到了肌肉训练的季节,所以我很兴奋。
顺便问一下,你们都知道LPIC吗?
它在IT资格中是相当有名的,我想很多工程师都参加过这个考试。
去年,Level 3进行了修订,LPIC304被废除,分为305(虚拟化和容器化)和306(高可用性和存储集群)。
所以,我上个月参加了考试,因为305的内容是和容器相关的,我很喜欢,所以我想和大家分享一下我为了通过考试所学的内容和我对考试的感想!
1.LPIC-305概述
考试的大致轮廓是,考试将主要涵盖KVM等通用虚拟化技术、Docker等容器技术以及Packer等配置工具。
问题包括 KVM 和 Xen 如何实现虚拟化、命名空间等容器技术背后的概念以及 Docker 和 Kubernetes 的实际行为。
*详细概述请参考以下官方网站。
https://www.lpi.org/ja/exam-305-objectives
另外,由于这是2022年新设立的考试,与之前的LPIC-304不同,ping-t和所谓的黑书尚未出版(截至2023年7月)。
因此,在备考时,你需要在笔记本上记住重要的单词和短语,或者通过实际的双手来检查行为。
我认为留出至少一个月或更长时间的学习时间会比较安全。
2. 为了考试我学了什么
我主要研究了四件事,所以我会逐一解释。
・使用 ping-t 反复解决 LPIC-304 问题集
・学习容器的基本概念
・手把手学习 Docker、LXD 和 Kubernetes
・学习Packer等
使用 ping-t 反复解决 LPIC-304 问题
LPIC-305 和 304 在虚拟化技术的范围上总体上是重叠的,所以我用 ping-t 专注于这一部分,这样我就能始终获得 100% 的分数。
特别是,一开始我不知道Xen和QEMU是什么,所以每次解决问题我就开始阅读ping-t解释中的插图。
除了上述内容之外,我还记住了具体的操作,例如使用 QEMU 进行硬件模拟和使用 KVM 进行 CPU 虚拟化支持,直到我能记住它们为止。
结果我在实际考试中得以将其作为一种排除方法,比如省略掉与题目内容无关的单词。
研究容器的基本概念
由于没有备考书籍或专门的网站,我首先整理了官方网站上列出的重要单词和短语,然后搜索 Docker 书籍和互联网进行深入挖掘。
尤其是实现容器技术的最基本的功能,如“namespace”、“cgroups”、“capability”、“seccomp”等,在多本书中都有详细的研究。
在实际构建了 Docker 环境之后,我实际上使用 nsenter 和 unshare 命令创建了一个命名空间。
除此之外,我还详细研究了runc和containerd之间的关系,以及Kubernetes pod崩溃时的行为。
手把手学习 Docker、LXD 和 Kubernetes
由于这是一个繁重的测试,我在 Vagrant + VirtualBox 上本地搭建了 Docker 和 LXD 环境,并反复创建和删除容器。
在考试中,问题包括 Dockerfile 的内容以及挂载本地目录和启动容器的命令。
我使得在各种假设下执行run命令成为可能,并且还记住了相对常用的选项,例如--volumes-from。
我还确保记住 daemon.json 文件的默认路径,您可以在其中指定各种 Docker 选项。
▼ 指定 --volumes-from 选项
docker run --volumes-from [容器名称] -d -p 8080:80 centos7:latest
接下来,虽然不如Docker那么熟悉,但我了解了LXD容器,它本身就是一个容器化的虚拟机,并学习了拉取OS镜像和设置端口转发的命令,以便我可以查看容器内的页面我通过浏览器研究了各种各样的东西。
▼ 端口转发设置
lxc配置设备添加centos http代理listen=tcp:127.0.0.1:50005 connect=tcp:[容器IP]:80 bind=host
此外,由于 Kubernetes 构建您自己的环境可能有点复杂,因此我们使用 Docker Desktop 来练习命令和检查行为。
具体来说,我们创建了一个包含多个容器的 Pod,并检查了其中一个容器被删除时的行为,以及如何组合多个 Pod 来创建 WordPress 页面。
研究 Packer 等人。
除了以上之外,我还通过动手学习了“Packer”、“cloud-init”、“Docker Swarm”。
例如,cloud-init与LXD容器结合使用,通过在配置文件中指定cloud-init文件来启动LXD容器。
▼ 在配置文件中指定cloud-init文件并启动LXD容器
lxc 配置集 ubuntu-container user.user-data - <
另外,Docker Swarm 的构建并不像 Kubernetes 那么复杂,因此您可以自己构建环境,验证拉取 Docker 映像的命令,当一个工作节点出现故障时,会在我检查的另一个工作节点上自动创建一个容器。看看它是否有效。
不过这里考验的分量并没有那么高,所以我只是轻轻的碰了一下。
以上是我所学知识的总结,但除此之外,我还尝试全面的学习,比如改变Docker容器的能力,限制可以执行的服务。
学习时间大约为一个半月。
3. 参加测试
以下是我参加考试后的感想。
・通过重复LPIC-304过去的问题可以理解虚拟化技术的范围。
- 通过动手学习各种选项来了解容器和 Docker 的基本概念。
・如果测试重量较低,则无需挖掘那么深。
在上面列出的问题中,我感觉大约有三分之一的问题(实验性的)是关于Docker的,所以我认为如果你本着充分理解它的精神去学习,你不会遇到任何你不知道的词理解。
此外,考试中每个不太重要的项目都会有一两个问题,因此请务必记住基本命令,例如构建命令。
4.总结
这次考试是学习虚拟化和容器基本概念的好机会。
而且,由于我能够实际用手来记忆东西,所以我能够在乐趣中学习新知识,而不是为学习本身而苦苦挣扎。
关于LPIC-305的资料并不多,需要大家自行研究,所以希望这篇文章能够对大家有所帮助。