我通过了LPIC-305考试

很高兴认识你,我是 Shirasaka,系统解决方案部门的肌肉训练工程师。

夏天正式开始了,是时候进行力量训练了,我很兴奋。

这个问题可能有点突然,但你们都知道LPIC吗?

它是最知名的IT资格认证之一,我相信很多工程师都参加过这个考试。

去年,第 3 级进行了修订,废除了 LPIC304,并将其拆分为 305(虚拟化和容器化)和 306(高可用性和存储集群)。

由于 305 的内容与容器有关,而我恰恰喜​​欢容器这个领域,所以我上个月参加了考试,想和大家分享一下我为了通过考试所学习的内容以及我对考试的感想!

1. LPIC-305 概述

考试主要范围涵盖虚拟化技术(如 KVM)、容器技术(如 Docker)和配置工具(如 Packer)。

问题包括 KVM 和 Xen 如何实现虚拟化、容器技术背后的概念(例如命名空间)以及 Docker 和 Kubernetes 的实际行为。

*更多详情请参阅以下官方网站。

https://www.lpi.org/en/exam-305-objectives

此外,由于这是 2022 年设立的新考试,因此没有像之前的 LPIC-304 考试那样发布 ping-t 或黑皮书(截至 2023 年 7 月)。

因此,在备考时,你需要把重要的单词记在笔记本上,并且要实际用手去检验其含义。

我认为最好至少留出一个月的时间来学习。

2. 我为考试复习了什么

总的来说,我主要关注了四件事,下面我将逐一解释。

・反复使用ping-t解决LPIC-304问题集

・学习容器的基本概念

・通过实践经验学习 Docker、LXD 和 Kubernetes

・学习包装工等

反复使用 ping-t 解决 LPIC-304 练习题

由于 LPIC-305 和 304 的虚拟化技术范围存在重叠,我只专注于使用 ping-t 研究那部分,并且能够始终获得 100% 的分数。

尤其是一开始我完全不知道 Xen 和 QEMU 是什么,所以我每次解决问题时都会反复阅读 ping-t 说明中的插图。

除了上述内容之外,我还记住了诸如使用 QEMU 模拟硬件和使用 KVM 支持 CPU 虚拟化等具体步骤,直到能够背诵出来。

因此,我能够运用排除法排除与实际考试题目内容无关的词语。

学习容器的基本概念

由于没有针对此考试的备考书籍或专门网站,我首先整理了官方网站上列出的重要术语,然后通过搜索 Docker 书籍和互联网进行了更深入的研究。

特别是,实现容器技术最基本的功能,如“命名空间”、“cgroups”、“功能”和“seccomp”,已经在几本书中进行了详细的研究。

在实际构建 Docker 环境之后,我使用 nsenter 和 unshare 命令创建了一个命名空间。

除了上述内容之外,我还详细研究了 runc 和 containerd 之间的关系,以及 Kubernetes pod 宕机时的行为。

通过实践学习 Docker、LXD 和 Kubernetes

由于这个测试非常耗费资源,我在本地 Vagrant + VirtualBox 上创建了一个 Docker 和 LXD 环境,然后反复创建和删除容器。

考试会问到有关 Dockerfile 内容、挂载本地目录和启动容器的命令等问题。

我尝试在各种假设下执行运行命令,并且记住了比较常用的选项,例如 --volumes-from。

我还特意记住了 daemon.json 文件的默认路径,该文件允许您指定各种 Docker 选项。

▼ 指定 --volumes-from 选项

 docker run --volumes-from 【容器名称】 -d -p 8080:80 centos7:latest 

接下来,虽然LXD容器不如Docker那么普及,但我们也学习了它。LXD容器是将虚拟机封装成的容器。我们学习了各种各样的知识,例如拉取操作系统镜像的命令,以及设置端口转发以便可以通过浏览器访问容器内的页面。

▼ 端口转发设置

lxc config device add centos http proxy 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 config set ubuntu-container user.user-data - < cloud-init-config.yml

 

此外,由于 Docker Swarm 的设置不像 Kubernetes 那样复杂,我自己设置了环境,验证了拉取 Docker 镜像的命令,并检查了当一个工作节点宕机时,容器是否会在另一个工作节点上自动创建。

但是,由于这里的测试重量并不高,我只是轻轻地碰了一下。

以上是我所学内容的总结,但我还尝试全面学习其他内容,例如改变 Docker 容器的功能以限制可以运行的服务。

研究周期约为一个半月。

3.参加考试

以下是我对参加考试的一些想法:

・通过反复学习LPIC-304的往年试题,你可以掌握虚拟化技术的范围。

・通过动手实践和学习各种选项,掌握容器和 Docker 的基本概念。

・无需对低权重测试进行深入研究。

根据个人经验,以上问题中大约有三分之一与 Docker 有关,所以如果你下定决心要完全理解它,我想你就不会遇到任何不理解的词汇了。

此外,考试中每个较低级别的项目都会有一到两个问题,所以一定要记住基本命令,例如 build 命令。

4. 总结

这次考试是一个很好的机会,让我了解虚拟化和容器的基本概念。

因为我能够通过实际操作来学习,所以学习本身并不是一件苦差事;相反,我能够在享受乐趣的同时学习新知识。

关于 LPIC-305 的信息很少,所以你只能通过反复试验来学习,希望这篇文章能对你有所帮助。

如果您觉得这篇文章有用,请点击【点赞】!
30
加载中...
30票,平均分:1.00/130
5,836
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

白坂

我是系统解决方案部门的肌肉呼啦工程师。
我最喜欢的居家训练动作是硬拉。
最近我迷上了吃竹轮来补充蛋白质。