集群体检在做什么
集群体检就是把若干只读查询按固定顺序跑一遍,用最短时间回答三个问题:节点是否健康、控制面组件是否退化、有没有卡住的负载。它关注的是变化量而不是某个指标的单点数值——重启次数上升、驱逐事件、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 或状态反复抖动 |
| 控制面 Pod | Running,重启次数不增长 | 重启次数持续上升或 CrashLoopBackOff |
| 待处理负载 | 少量 Pending 且很快被调度 | 长时间 Pending,事件里写明资源不足 |
| 集群事件 | 偶发拉镜像慢、探针抖动 | 调度失败、驱逐事件集中出现 |
| 自检与证书 | readyz 全部通过,证书剩余数月 | 自检项 fail,证书剩余不足 30 天 |
体检的价值来自对比。把节点列表、事件、重启次数存成快照,下次用差异比对找变化,比每天从零看一遍更快发现苗头。
/readyz 通过只说明 apiserver 自身及其后端可用。CNI、CSI、调度器等组件挂掉时它依然可能是绿的,所以体检必须与节点、Pod 状态一起看。