CKA 实战培训教程¶
适用目标¶
这篇教程的目标不是只帮你“看懂 CKA 是什么”,而是尽量让你通过一套可执行的训练路径,掌握 CKA 所覆盖的核心知识点,尤其是操作题部分。
如果你是下面这类人,这篇内容会比较适合:
- 已经有一些 Kubernetes 使用经验,但实操不够系统
- 平时更多在用 Helm、Argo CD、平台工具,对底层命令不够熟
- 想尽快补齐 CKA 的考试思维,而不是只零散刷题
先理解考试¶
根据 Linux Foundation 官方说明,CKA 是一场在线、监考、基于命令行的实操考试,考试时长 2 小时,当前考试环境基于 Kubernetes v1.34。题目不是选择题,而是在给定集群环境里完成实际任务。
当前官方能力域可以概括为:
- Cluster Architecture, Installation & Configuration:
25% - Workloads & Scheduling:
15% - Services & Networking:
20% - Storage:
10% - Troubleshooting:
30%
从备考收益看,Troubleshooting、Cluster Architecture 和 Services & Networking 最值得优先投入。
备考总策略¶
正确思路¶
CKA 不是比“谁背得多”,而是比:
- 能不能快速定位题意
- 能不能用最短命令完成任务
- 改完之后会不会验证
- 卡住时能不能及时跳题
训练原则¶
你做每一道练习题时,建议固定遵守这个顺序:
- 先看题目要求,确认是在“创建、修改、排查”哪一类任务
- 先切到正确上下文和命名空间
- 优先用最熟的
kubectl原生命令完成 - 完成后立刻验证,不要凭感觉交卷
- 超过 5 分钟没进展就先跳题
考试环境准备¶
先练熟这些习惯¶
alias¶
高频命令脑内模板¶
k get pods -A
k get pod <pod-name> -n <ns> -o wide
k describe pod <pod-name> -n <ns>
k logs <pod-name> -n <ns>
k logs <pod-name> -n <ns> --previous
k get events -A --sort-by=.lastTimestamp
k get all -n <ns>
k explain <resource>
k api-resources
k api-versions
快速生成 YAML¶
k create deployment nginx --image=nginx --dry-run=client -o yaml > deploy.yaml
k run test --image=busybox --restart=Never --dry-run=client -o yaml -- sh
这类命令的价值非常大,因为 CKA 操作题很多时候不是从零默写 YAML,而是先生成骨架再修改。
训练路线图¶
建议你按下面顺序练:
- 先搭好一套接近考场的练习环境
- 再练
kubectl基本操作和 YAML 修改速度 - 再练工作负载、调度、Service、Ingress、PVC
- 再练 kubeadm、RBAC、NetworkPolicy、CoreDNS
-
最后重点练故障排查和限时模拟
- CKA 高频命令速查表
- CKA 模拟考题与标准解法
- CKA 30 道操作题训练营
一、Cluster Architecture, Installation & Configuration¶
这部分在考试里经常不是“纯理论”,而是带有明显操作色彩的集群管理题。
你必须掌握的知识点¶
- Kubernetes 控制面和工作节点的组成
kubeadm初始化、加入节点、升级集群- RBAC
- kubeconfig / context 切换
- Helm 和 Kustomize 基本使用
- CRD / Operator 的基本认知
- CNI / CSI / CRI 的职责边界
- 高可用控制面基本设计
你要会做的操作¶
1. 查看和切换上下文¶
这是考试最容易丢分的地方之一。很多人不是不会,而是改错集群。
2. 创建和授权 ServiceAccount / Role / RoleBinding¶
k create serviceaccount app-sa -n dev
k create role pod-reader --verb=get,list,watch --resource=pods -n dev
k create rolebinding read-pods \
--role=pod-reader \
--serviceaccount=dev:app-sa \
-n dev
然后验证:
3. 使用 kubeadm 管理集群¶
你至少要知道这些动作怎么做:
kubeadm initkubeadm joinkubeadm token create --print-join-commandkubeadm upgrade plankubeadm upgrade apply
考试视角的操作重点¶
- 不要求你把 HA 架构完全从零搭到生产级,但要理解 HA 的基本结构
- 常见考点更偏向 kubeadm 生命周期、证书、节点加入和升级
- RBAC 一定要练到“看到题就能秒出命令”
建议练习题¶
练习 1¶
在 team-a 命名空间创建一个 ServiceAccount,只允许读取 Pod 列表。
练习 2¶
给出一个 kubeconfig 文件,切换到指定集群后查询某个 namespace 的 Pod。
练习 3¶
在一台控制面节点上查看 kubeadm upgrade plan,并说出升级前的检查项。
二、Workloads & Scheduling¶
这部分是 CKA 的基础操作区,要求你非常熟悉工作负载对象和调度策略。
你必须掌握的知识点¶
- Pod、Deployment、DaemonSet、StatefulSet、Job、CronJob
- labels / selectors
- rolling update / rollback
- ConfigMap / Secret
- requests / limits
- nodeSelector / affinity / anti-affinity
- taint / toleration
- autoscaling 基础
你要会做的操作¶
1. 创建 Deployment 并暴露镜像¶
k create deployment web --image=nginx:1.25
k set image deployment/web nginx=nginx:1.26
k rollout status deployment/web
k rollout history deployment/web
k rollout undo deployment/web
2. 修改副本数¶
3. 用 ConfigMap 配置环境变量¶
然后在 Pod 里通过 envFrom 或 valueFrom 引用。
4. 为 Pod 指定调度约束¶
Pod 中写:
或者使用:
nodeAffinitypodAntiAffinitytolerations
高频易错点¶
selector和template.labels不一致- Deployment 改了镜像但没验证 rollout
- Secret 值需要 base64 编码
- 把调度失败误判成容器启动失败
建议练习题¶
练习 1¶
创建一个 Deployment,副本数 3,镜像 nginx:1.25,然后滚动升级到 1.26,最后回滚。
练习 2¶
让一个 Pod 只能调度到带 gpu=true 标签的节点。
练习 3¶
创建一个 CronJob,每 5 分钟执行一次 busybox 输出时间。
三、Services & Networking¶
这部分经常会出操作题和排障题,很多人不是不会概念,而是不会验证链路。
你必须掌握的知识点¶
- Pod 网络模型
- ClusterIP / NodePort / LoadBalancer
- Ingress
- Gateway API 基本认知
- Endpoints / EndpointSlice
- CoreDNS
- NetworkPolicy
- kube-proxy 基本工作方式
你要会做的操作¶
1. 暴露 Deployment¶
2. 创建 NodePort Service¶
apiVersion: v1
kind: Service
metadata:
name: web-nodeport
spec:
type: NodePort
selector:
app: web
ports:
- port: 80
targetPort: 80
nodePort: 30080
3. 查看 Endpoints¶
这个动作非常关键。Service 不通时,先看它有没有正确关联到后端 Pod。
4. 编写 NetworkPolicy¶
典型场景:
- 只允许某个 namespace 访问某个 Pod
- 只允许 80 端口流量进入
- 默认拒绝所有 ingress
Service 不通时的排查顺序¶
- Pod 是否 Running 且 Ready
- labels 是否匹配 Service selector
- Endpoints 是否生成
- 容器监听端口和 Service targetPort 是否一致
- 是否存在 NetworkPolicy 限制
- CoreDNS、kube-proxy、CNI 是否异常
建议练习题¶
练习 1¶
部署一个 nginx Pod,用 ClusterIP 暴露,然后用临时 Pod 访问它。
练习 2¶
给某个 namespace 写一条默认拒绝 ingress 的 NetworkPolicy,再单独放通某个 Pod 的 80 端口访问。
练习 3¶
排查一个“Service 有对象但访问失败”的场景,确认问题在 selector、port 还是网络策略。
四、Storage¶
Storage 在 CKA 里权重不算最高,但它很容易因为不熟导致白白丢分。
你必须掌握的知识点¶
- Volume / PV / PVC / StorageClass
- access modes
- reclaim policy
- 动态供给
- 常见 Volume 类型
你要会做的操作¶
1. 创建 PVC¶
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
2. 在 Pod 中挂载 PVC¶
volumes:
- name: data
persistentVolumeClaim:
claimName: data-pvc
containers:
- name: app
image: nginx
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
3. 查看绑定情况¶
排障思路¶
PVC 一直 Pending 时,优先看:
- 是否存在可用 PV
- StorageClass 是否配置正确
- 请求容量是否匹配
- access mode 是否匹配
- 动态供给驱动是否正常
建议练习题¶
练习 1¶
创建一个 PVC,让指定 Pod 挂载到 /data。
练习 2¶
给一个 PVC 故意写错 StorageClass,然后排查它为什么 Pending。
五、Troubleshooting¶
这是 CKA 权重最高的一块,也是最能体现操作能力的部分。
你必须掌握的知识点¶
- 集群组件故障排查
- 节点故障排查
- Pod 故障排查
- 容器日志和事件查看
- 资源使用监控
- Service 和网络排障
- CoreDNS 问题排查
统一排障顺序¶
任何 Kubernetes 故障题,建议先走这条主线:
- 明确影响面
- 看资源状态
- 看
describe - 看
logs - 看
events - 看关联资源
- 修复后验证
高频排障题模板¶
1. Pod Pending¶
先查:
重点看:
FailedScheduling- 资源不足
- taint / toleration
- affinity / anti-affinity
- PVC 绑定失败
2. CrashLoopBackOff¶
先查:
重点看:
- 应用启动报错
- 探针失败
- 配置错误
- OOMKilled
3. Node NotReady¶
先查:
再看:
- kubelet 状态
- container runtime 状态
- 磁盘空间
- 网络连通性
4. Service 不通¶
先查:
再确认:
- selector 是否匹配
- Pod 是否 Ready
- targetPort 是否正确
- NetworkPolicy 是否阻断
考试里最值钱的排障命令¶
k get events -A --sort-by=.lastTimestamp
k describe pod <pod>
k describe node <node>
k logs <pod> --previous
k top nodes
k top pods -A
k get endpoints -A
k get networkpolicy -A
k get pvc,pv
高频操作技巧¶
技巧 1:先生成再修改¶
能用 --dry-run=client -o yaml 就不要手写整份 YAML。
技巧 2:优先改最小范围¶
如果题目要求“修复某个 Deployment”,不要顺手改一堆无关资源。
技巧 3:完成后立刻验证¶
例如:
- Deployment:
k rollout status deployment/<name> - Service:
curl或临时 Pod 测试 - PVC:
k get pvc - RBAC:
k auth can-i
技巧 4:善用临时测试 Pod¶
这在测试 DNS、Service、端口连通性时非常好用。
技巧 5:不会 YAML 字段时先 explain¶
30 天训练计划¶
第 1 周¶
- 熟悉
kubectl、context、namespace - 练 Pod、Deployment、Service、ConfigMap、Secret
- 练 YAML 快速生成与修改
第 2 周¶
- 练调度、资源限制、Job、CronJob
- 练 RBAC、NetworkPolicy、PVC、StorageClass
- 每天做 3 到 5 道小题
第 3 周¶
- 练 kubeadm、节点维护、升级思路
- 练 CoreDNS、Service、网络排障
- 开始做限时题
第 4 周¶
- 重点刷 Troubleshooting
- 做整套模拟
- 整理自己的错题命令模板
临考前检查清单¶
- 我能快速切换 context 和 namespace
- 我能熟练生成 Deployment / Pod / PVC YAML
- 我能独立完成 RBAC 授权
- 我能排查 Pending / CrashLoopBackOff / Service 不通
- 我知道如何验证每一道题是否完成
- 我能在 2 小时内合理跳题和回头做题
这篇教程怎么继续用¶
如果你想把这篇教程真正变成“可过证”的训练材料,下一步最值得补的是这 3 类内容:
这三部分补齐之后,这套内容就会从“教程”升级成“完整备考手册”。