LabHub
学习 学习路径 课程

CKA — Kubernetes 管理员

把集群摸清楚再上手

在 LabHub 中继续学习

目标

熟练掌握首次进入集群时要做的七项工作:调查、namespace、标签与注解、context 切换、节点标签、kubectl explain,以及通过 dry-run 生成清单。

为什么这很重要

CKA 考试共 120 分钟、17 道题,平均每题只有 7 分钟。如果从头手写清单,时间会不够。因此,使用 --dry-run=client -o yaml 生成骨架,再只修改必要字段,实际上已经成为标准策略。

kubectl explain 是另一半关键工具。考试现场只能查阅 Kubernetes 官方文档,但如果只是确认某个字段的准确拼写与位置,explain 要快得多。标签与注解的区别也是同一道理。标签是选择器能够选择的标识,Service 和控制器会引用它;注解是无法被选择的附加信息,工具通过它传递元数据。若混用二者,所有连接都可能悄无声息地失效。

步骤

  1. 创建 namespace cka-basics,并添加标签 env=lab
  2. 将集群中所有节点名称逐行保存到 /root/cka-basics/nodes.txt。文件中只能有名称,不能包含表头或 node/ 前缀。
  3. cka-basics 中创建 ConfigMap app-meta。数据为 env=lab,标签为 tier=backend,注解为 owner=cka-student
  4. 原样复用当前使用的 cluster 和 user,创建默认 namespace 为 cka-basics 的 context cka-basics-ctx,并切换到该 context。
  5. 为节点 lab-node-1 添加标签 disktype=ssdtopology.kubernetes.io/zone=rack-a,以及注解 owner=cka-student
  6. 提取 Pod toleration 的 effect 字段说明,使用 kubectl explain,并保存到 /root/cka-basics/explain.txt
  7. 通过 dry-run 生成 Deployment web(镜像 nginx:1.27,副本数 3)的清单,并保存到 /root/cka-basics/web.yaml。此步骤暂时不要应用。
  8. 将该清单应用到 cka-basics,为 Deployment 对象添加标签 tier=backend,然后确认 3/3 Ready。

参考

创建 namespace 并添加标签

创建 namespace cka-basics,并添加标签 env=lab

可以先创建 namespace 再单独添加标签,也可以从一开始就在清单中设置。标签位于 metadata.labels 下。

将节点列表导出到文件

将集群中所有节点名称逐行保存到 /root/cka-basics/nodes.txt。文件中只能有名称,不能包含表头或 node/ 前缀。

文件中只能逐行包含节点名称。请考虑如何从输出中去掉表头或 node/ 前缀。jsonpath 的 range 或 -o custom-columns 会很有帮助。

区分标签与注解并正确添加

cka-basics 中创建 ConfigMap app-meta。数据为 env=lab,标签为 tier=backend,注解为 owner=cka-student

标签是选择器可以选择的标识,注解是不能被选择的附加信息。两者的存储位置不同(metadata.labels 与 metadata.annotations)。

创建并切换 kubeconfig context

原样复用当前使用的 cluster 和 user,创建默认 namespace 为 cka-basics 的 context cka-basics-ctx,并切换到该 context。

context 是 cluster + user + namespace 三者的组合。无需创建新的 cluster 或 user,请原样复用已有名称。先用 kubectl config get-clusters 和 get-users 确认名称。

为节点添加标签与注解

为节点 lab-node-1 添加标签 disktype=ssdtopology.kubernetes.io/zone=rack-a,以及注解 owner=cka-student

节点也是对象,因此可以直接使用 label/annotate 命令。含斜杠的键可以原样使用。

使用 kubectl explain 提取字段说明

提取 Pod toleration 的 effect 字段说明,使用 kubectl explain,并保存到 /root/cka-basics/explain.txt

explain 使用点号表示法追踪嵌套字段。请指定 Pod spec 的 toleration 数组中的该字段。

使用 dry-run 创建清单

通过 dry-run 生成 Deployment web(镜像 nginx:1.27,副本数 3)的清单,并保存到 /root/cka-basics/web.yaml。此步骤暂时不要应用。

在 kubectl create 系列命令后加入 --dry-run=client -o yaml,就能在不修改 API 的情况下只输出 YAML。副本数可以通过 create 选项指定。

应用并完成标签设置

将该清单应用到 cka-basics,为 Deployment 对象添加标签 tier=backend,然后确认 3/3 Ready。

直接应用上一步创建的文件。标签必须添加到 Deployment 对象本身,而不是 Pod 模板。Pod 达到 Ready 状态可能需要一点时间。