会 Docker 的我决定考 CKA——考试拆解、15 周计划与课堂公约(苏格拉底对话实录)
CKA 通过之路 · 第 1/13 篇
上一篇:无 · 下一篇:《从 docker run 到「我要 3 个」——kind 十分钟初体验》
写在前面
这个系列的起点是一句话。我把 Docker 用得挺熟,某天对着 AI 说了这句:
🧑🎓 学生: 我会 docker,那么 k8s 究竟怎么回事,给我一个最为简单的例子快速体验一下。
后来又补了一句改变整个系列风格的话:
🧑🎓 学生: 我昨天什么事情也没有做,你就当我是新来的,只会 docker。
以及最重要的一句:
🧑🎓 学生: 使用苏格拉底的方式来进行教学。
于是整个系列变成了这样一堂课:AI 当老师,我当 0 基础学生,每轮只问一个问题,我不懂就直说"不知道",所有结论必须由我在自己机器上跑出来的结果说话。文中所有控制台输出都是我本机(WSL2 Ubuntu-22.04 + kind v0.33.0 + Kubernetes v1.37.0)逐字粘贴的真实结果。
本篇先不碰集群,只回答三件事:CKA 考试是什么、计划怎么排、课堂规则怎么定。
第 1 课:CKA 考试到底是什么
老师先甩了一张事实表,让我对考试有准确预期(CNCF 官方考试页、考试环境官方说明):
| 项目 | 内容 |
|---|---|
| 形式 | 纯上机操作,无选择题。给一个真实集群,命令行里完成约 15-20 个任务 |
| 时长/及格 | 2 小时,66 分及格(百分制) |
| 开卷 | 考试中允许查 kubernetes.io 官方文档和 man 手册——"会快速查文档"本身就是应试技能 |
| 环境 | 浏览器 + PSI 远程监考(摄像头、房间检查、政府签发证件,建议用护照) |
| 费用 | 395 美元,含 1 次免费重考;CNCF 常年发 30-50% 折扣码,报名前搜一下当期码 |
| 有效期 | 2 年;之后可考进阶的 CKS |
| 五个考区权重 | 故障排查 30%、集群架构 25%、服务与网络 20%、工作负载与调度 15%、存储 10% |
两个容易误解的点,老师特别标了出来:
- 没有选择题。所有题都是"在集群上把这件事做成"——所以背题没用,必须手熟。
- 可以查文档。所以学习的重点不是背参数,是"知道去哪找 + 找得快"。
第 2 课:15 周在职计划
按西蒙学习法拆的组块(单一目标、连续投入、组块化、及时反馈四原则落实到每周):
| 周 | 组块 | 内容 | 验收任务(不看资料完成) |
|---|---|---|---|
| 1-2 | A 核心对象 | Pod/Deployment/Service/label/namespace/ConfigMap/Secret/probe/Job + 命令行速成 | 一条命令生成 yaml,部署带 ConfigMap + Secret + 存活探针的 Deployment 并 expose |
| 3 | B 调度 | requests/limits、nodeSelector、亲和性、污点/容忍、DaemonSet | 把 pod 用 3 种方法精确调度到指定节点 |
| 4-5 | C 网络 | Service 四种类型、Ingress、CoreDNS、NetworkPolicy | 写一条 NetworkPolicy 只放行指定 pod 的访问并验证 |
| 6 | D 存储 | PV/PVC/StorageClass、accessModes、PVC 扩容 | 创建 PVC → 挂进 pod → 扩容 → 核实绑定 |
| 7-9 | E 集群架构 | kubeadm init/join、升级流程、etcd 备份恢复、RBAC | 干净环境从零装两节点集群 + etcd 备份恢复 |
| 10-11 | F 故障排查 | 事件/日志/describe、NotReady 处理、Service 不通排查链 | 自造 10 种故障逐一修到 Running |
| 12-13 | 反馈环 | killer.sh 官方模拟(报名即送 2 次)+ 4 套第三方模拟 | 每套 ≥66 分,失分考区回炉 |
| 14 | 收口 | 薄弱组块 + 速度训练 | 连续两套模拟 ≥85% |
| 15 | 考试 | 约考、环境检查 | 通过 |
这个系列的文章,就是把组块 A 一路真实走下来的课堂逐字稿。
第 3 课:课堂公约是怎么形成的
一开始老师用的是"管家/订单/总机"这类比喻,很快被我打断了:
🧑🎓 学生: 看不懂,我是 0 基础。
🧑🎓 学生: 不要打比方,不要比喻。
🧑🎓 学生: 看不懂你在说什么,每次只允许问我一个问题。
三次打断之后,课堂规则固定成了这三条铁律,也是整个系列的写法:
- 苏格拉底式:老师每轮只问一个问题;我答"不知道"是合法回答,下一步永远是缩小问题、或者设计一个让我自己看到答案的实验
- 绝对真实:所有命令输出必须是我本机跑出来的,逐字粘贴,不许编
- 最新文档:涉及 API 和参数,写作时对照 kubernetes.io 官方文档核对,不凭记忆写
后来证明"每轮一问"是对的——当我被问"READY 1/1 里两个数分别是什么"而我只能回答"不知道,我猜的"时,恰恰暴露了理解的空洞,这个瞬间被原样保留在了第 6 篇里。
第 4 课:练习环境
我的环境(Windows 10 + WSL2):
WSL2 Ubuntu-22.04(root)+ Docker Engine 29.1.3
kind v0.33.0,集群 demo,单节点 Kubernetes v1.37.0
kubectl v1.37.0为了少敲字,在 Windows 侧做了个 k.cmd 包装,把 k 转发到 WSL 里的 kubectl。这里有一段值得记录的对话:
🧑🎓 学生: 到时候真正的去考试的时候,也是输入命令 k?
🧑🏫 老师: 不是。
k是你本机的转发文件。考试环境是浏览器里的 Linux 终端,默认命令是完整的kubectl。但开考后第一件事就是给自己设别名(官方允许):
alias k=kubectl
export do="--dry-run=client -o yaml"之后 k get pods 就是 kubectl get pods,k run nginx --image=nginx $do 就是带 dry-run 的完整命令。2 小时考试里省下的都是真时间。
还有一个国内环境的坑提前记录:kind 节点内部的 containerd 不走宿主机 docker 的镜像加速,直连 Docker Hub 会失败。我的解法是在节点里手动用 ctr 从镜像加速器拉镜像再改标签(详见下一篇)。
本篇小结
- CKA = 2 小时上机实操、66 分及格、可查官方文档;故障排查权重最高(30%)
- 15 周计划按组块推进,每块有"不看资料能做出来"的验收任务
- 课堂公约三条:苏格拉底一问一答、真实运行结果、最新官方文档