ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

占CKA 30%分值!cka-certification-guide的NotReady节点、CrashLoopBackOff系统化排障Playbook全解读

占CKA 30%分值!cka-certification-guide的NotReady节点、CrashLoopBackOff系统化排障Playbook全解读

【免费下载链接】cka-certification-guide

This comprehensive CKA learning path repo equips aspiring Kubernetes administrators with all the knowledge and resources to ace the CKA exam on the first try. Includes in-depth explanations, hands-on labs, and valuable study materials. Pass the CKA and unlock your Kubernetes potential today!

项目地址:https://gitcode.com/gh_mirrors/ck/cka-certification-guide
点击查看免费下载

在 CKA(Certified Kubernetes Administrator)考试中,Troubleshooting(故障排障)域占 30% 分值,是权重最高的单一领域。本文基于开源学习指南 cka-certification-guide,为你完整解读 NodeNotReady与 PodCrashLoopBackOff两大高频故障的系统化排障 Playbook,帮新手建立一套"不慌、有序、可复现"的 CKA 排障思维。

📌核心认知:所有 CKA 排障题都能用同一套四步法回答——查状态 → 看事件 → 查日志 → 修完验证。方法论比单点命令更重要。

CKA 考试分值分布:为什么 Troubleshooting 最优先学

ck-certification-guide 按官方权重把知识域划分为五块,排障域高居榜首:

知识域分值权重对应学习文件
Troubleshooting(排障)30%study-notes/05-troubleshooting.md
Cluster Architecture(集群架构)25%study-notes/01-cluster-architecture.md
Services & Networking(服务网络)20%study-notes/04-services-networking.md
Workloads & Scheduling(工作负载)15%study-notes/02-workloads-scheduling.md
Storage(存储)10%study-notes/03-storage.md

💡备考建议:如果时间紧张,优先啃 Domain 5(排障)+ Domain 1(架构),这两块覆盖了一半以上分值。

系统化四步排障法:从 kubectl get 到 journalctl

仓库中的 TROUBLESHOOTING_GUIDE.md 把排障抽象成一条固定流水线,下图就是这套 Kubernetes 排障方法论的完整流程:

每一步都在回答一个具体问题:

  1. kubectl get <resource> -o wide—— 现在是什么状态?
  2. kubectl describe <resource>—— 为什么是这个状态?(重点读底部 Events,能揭示 80% 的问题)
  3. kubectl logs <pod>(加--previous看崩溃前日志)—— 应用说了什么?
  4. systemctl/journalctl—— 系统与 kubelet 说了什么?

Node NotReady 排障:5 步定位法

节点显示NotReady是 CKA 几乎必考的节点级故障。按顺序走:

# 1. 看节点状态与条件 kubectl get nodes -o wide kubectl describe node <node> # 重点看 Conditions 和 Events # 2. 登录节点查 kubelet ssh <node> systemctl status kubelet # 3. 常见修复:启动/自启 kubelet systemctl start kubelet && systemctl enable kubelet # 4. 读 kubelet 日志找根因 journalctl -u kubelet --since "10 minutes ago" | grep -i error
节点 Condition含义常用排查命令
MemoryPressure=True内存不足free -m、top
DiskPressure=True磁盘写满df -h,清理/var/lib/kubelet、容器镜像
PIDPressure=True进程数过多排查僵尸进程
Ready=Falsekubelet 停摆或证书过期systemctl status kubelet、kubeadm certs check-expiration

🔍考试技巧:绝大多数NotReady场景就是 kubelet 被停了。systemctl start kubelet一步解决,然后回控制面kubectl get nodes验证恢复。

CrashLoopBackOff 退出码速查表:1 分钟锁定根因

Pod 反复崩溃重启时,Exit Code 是最好的线索。describe 之后直接查表:

Exit Code含义处置方向
0正常退出容器没保持运行(缺 sleep/前台进程)
1应用错误看日志、环境变量、配置文件
2shell 命令误用修 command
126权限被拒检查文件权限
127命令未找到镜像或 entrypoint 写错了
137OOMKilled(内存超限)调大resources.limits.memory
143优雅终止正常关停信号
kubectl describe pod <pod> | grep "Exit Code" kubectl logs <pod> --previous # 看崩溃前的日志

其中最经典的就是137 = OOMKilled:容器内存触碰 limit 后被 SIGKILL。理解 requests 与 limits 的关系是避免误伤的前提:

⚠️易错点:kubectl logs默认只能看当前容器。CrashLoopBackOff 的容器已经死了,必须加--previous才能看到致命错误。

API Server 挂了怎么办:crictl 救援流程

更棘手的是控制面本身故障——此时kubectl不可用,必须登录节点用crictl直接操作容器运行时。理解下面这张静态 Pod 工作机制图是关键:控制面组件由 kubelet 直接托管,API Server 管不了自己。

控制面节点上必须熟悉这套目录布局,证书、manifest、kubeconfig 都在这里:

# kubectl 失效时的救援顺序 crictl ps -a | grep kube-apiserver crictl logs <container-id> ls /etc/kubernetes/manifests/ # 确认 4 个静态 Pod manifest 齐全 kubeadm certs check-expiration # 证书是否过期 kubeadm certs renew all && systemctl restart kubelet export KUBECONFIG=/etc/kubernetes/admin.conf # 恢复访问

🚑Fast Recovery 工作流(考试限时场景直接按顺序跑):systemctl status kubelet→journalctl -u kubelet -n 50→ls /etc/kubernetes/manifests/→crictl ps -a→kubeadm certs check-expiration。

CKA 高频排障场景速查清单

TROUBLESHOOTING_GUIDE.md 里总结了"症状 → 最可能原因 → 第一修复"的对照表,考前过一遍能节省大量现场思考时间:

症状最可能原因第一修复
NodeNotReadykubelet 停止systemctl start kubelet
PodCrashLoopBackOff应用错误/配置错误kubectl logs <pod> --previous
PodOOMKilled内存 limit 过低调大resources.limits.memory
PodImagePullBackOff镜像名/tag 错误或缺拉取密钥修 image,补 imagePullSecrets
PodPending无节点可调度查 taints、亲和性、资源
Service 无 endpointsselector 与 Pod 标签不匹配kubectl edit svc修 selector
PVCPending无匹配 PV 或 StorageClasskubectl describe pvc

配套还有完整的 CHEATSHEET.md 命令速查表,其中明确标注了kubectl describe node / drain / cordon、kubectl logs、journalctl -u kubelet等命令都归属于 30% 权重的排障域。

配套实战环境与下一步学习

  • 📘 完整排障 Playbook(节点/控制面/Pod/网络/存储七章):TROUBLESHOOTING_GUIDE.md
  • 📓 图文排障笔记(含决策树与 kubeadm 迁移故障实战):study-notes/05-troubleshooting.md
  • 🧪 本地实验集群:仓库提供 lab-setup/ 目录,内含 multipass、Vagrant 等多平台一键搭集群脚本,建议用 kind-cluster/multi-node.yaml 快速验证排障操作
  • 📋 考试日流程与心态管理:EXAM_DAY_GUIDE.md 与 EXAM_TIPS.md
  • 📖 官方考纲对照:SYLLABUS.md

✅一句话总结:CKA 排障 = 固定顺序(get → describe → logs → journalctl)+ 固定知识(Conditions、Exit Code、静态 Pod、crictl)。把这套 Playbook 练到肌肉记忆,30% 的分值就是你的了。

【免费下载链接】cka-certification-guide

This comprehensive CKA learning path repo equips aspiring Kubernetes administrators with all the knowledge and resources to ace the CKA exam on the first try. Includes in-depth explanations, hands-on labs, and valuable study materials. Pass the CKA and unlock your Kubernetes potential today!

项目地址:https://gitcode.com/gh_mirrors/ck/cka-certification-guide
点击查看免费下载
上一篇:Vivi-Music播放引擎内幕:ExoPlayer集成、后台播放与ExoDownloadService下载机制完整指南
下一篇:W4A16稀疏微调工作流:Model Optimizer 中 2:4 结构化剪枝与精度恢复完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进