首页/云/Kubernetes 速查/集群体检清单(命令行版)
集群运维与排障54 条

集群体检清单(命令行版)

例行巡检按固定顺序过一遍:节点、系统组件、异常 Pod、事件、磁盘与证书,十分钟内可给出健康画像。

Kubernetes 速查云更新于 2026-10-13

集群体检在做什么

集群体检就是把若干只读查询按固定顺序跑一遍,用最短时间回答三个问题:节点是否健康、控制面组件是否退化、有没有卡住的负载。它关注的是变化量而不是某个指标的单点数值——重启次数上升、驱逐事件、Ready 翻转为 False,通常比 CPU 超标更早暴露隐患。

基本信息

适用平台Kubernetes 1.20+,kubeadm 自建与托管集群通用
所需权限可读 nodes、pods、events 与组件日志的账号
单次耗时熟练后 5-10 分钟
执行频率日常每日一次,变更前后各一次
结果留存快照落盘或接入日志系统,便于横向对比

检查顺序

  • 先看节点:Ready 状态、内存与磁盘压力、kubelet 版本是否一致
  • 再看控制面:kube-system 中 apiserver、controller-manager、scheduler、etcd 的副本是否齐全且重启次数稳定
  • 然后看业务负载:筛出非 Running、非 Succeeded 的 Pod,区分崩溃循环与长期等待调度
  • 接着翻事件:按时间倒序看 FailedScheduling、Evicted、BackOff、Unhealthy 这类信号
  • 最后看容量与证书:节点资源水位、API 响应延迟、控制面证书剩余有效期

体检命令集

体检命令集
kubectl get nodes -o wide                    # 节点状态与版本
kubectl get pods -n kube-system              # 控制面组件与重启次数
kubectl get pods -A --field-selector status.phase!=Running,status.phase!=Succeeded  # 异常负载
kubectl get events -A --sort-by=.lastTimestamp | tail -20   # 最近事件
kubectl get --raw /readyz                    # apiserver 自检
kubectl top nodes                            # 节点资源水位(需 metrics-server)

异常信号对照

检查项正常表现警惕信号
节点状态全部 Ready 且条件稳定出现 Ready=Unknown 或状态反复抖动
控制面 PodRunning,重启次数不增长重启次数持续上升或 CrashLoopBackOff
待处理负载少量 Pending 且很快被调度长时间 Pending,事件里写明资源不足
集群事件偶发拉镜像慢、探针抖动调度失败、驱逐事件集中出现
自检与证书readyz 全部通过,证书剩余数月自检项 fail,证书剩余不足 30 天
体检的价值来自对比。把节点列表、事件、重启次数存成快照,下次用差异比对找变化,比每天从零看一遍更快发现苗头。
/readyz 通过只说明 apiserver 自身及其后端可用。CNI、CSI、调度器等组件挂掉时它依然可能是绿的,所以体检必须与节点、Pod 状态一起看。

易错点

  • 只看业务命名空间不看 kube-system:控制面组件异常时业务可能暂时正常,等到新 Pod 无法创建就晚了
  • 跑一次不留记录:没有基线就无法判断重启 3 次和 300 次的区别,巡检价值大打折扣
  • 用 kubectl top 判断容量却不确认 metrics-server 状态:采集组件异常时会直接报错或给出过期数据
  • 忽略事件保留期:集群事件默认只保留一小时左右,故障复盘要在事发后尽快抓取或接入日志系统

数据来源与参考

  • Kubernetes 官方文档 · 监控与诊断集群
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌