K8S健康检查巡检清单-运维篇
以下是一份基于Kubernetes生产实践的健康检查巡检清单,涵盖集群核心组件、节点、工作负载、存储、网络等关键维度,结合具体参数与阈值,供运维人员系统化执行。
一、集群核心组件巡检
检查项 | 检查命令/方法 | 参数与阈值 | 风险等级 |
---|---|---|---|
API Server健康 | kubectl get componentstatuses | 所有组件状态为Healthy | 高(若异常则集群不可用) |
etcd集群状态 | etcdctl endpoint health | 所有成员返回health: true,无超时响应 | 高 |
Controller Manager | kubectl get pods -n kube-system | Pod状态为Running且READY=1/1 | 中 |
Scheduler | 同上 | 同上 | 中 |
插件状态 | kubectl get pods -n <插件命名空间> | kube-prometheus-stack、coredns、log-agent等核心插件运行正常,无OOM事件 | 高 |
二、节点健康巡检
检查项 | 检查命令/方法 | 参数与阈值 |
---|---|---|
节点就绪状态 | kubectl get nodes | 所有节点状态为Ready(≥2个NotReady为高风险) |
资源使用率 | kubectl top nodes | CPU/Memory: 正常:<70% 低风险:≥70% 中风险:≥85% 高风险:≥95% |
磁盘压力 | kubectl describe node | grep DiskPressure | 所有节点DiskPressure=False,磁盘使用率<80% |
OOM事件 | kubectl get events –field-selector=reason=OOMKilled | 24小时内无OOM事件 |
节点间通信 | ping或网络监控工具 | 延迟<50ms(无丢包),>150ms且丢包为高风险 |
三、工作负载与Pod状态
检查项 | 检查命令/方法 | 参数与阈值 |
---|---|---|
Pod异常状态 | kubectl get pods –all-namespaces | grep -Ev “Running|Completed” | 无Pending、CrashLoopBackOff、Error |
容器重启次数 | kubectl get pods -o json | jq ‘.items[] | select(.status.containerStatuses[].restartCount > 5)’ | 重启次数≤5(频繁重启需排查) |
资源请求/限制 | kubectl describe pod | Request水位:<80% Limit水位:<150% |
探针配置 | kubectl get pod -o yaml | grep -A 10 “livenessProbe” | 所有容器配置存活探针(Liveness)和就绪探针(Readiness) |
Pod资源使用 | kubectl top pods | CPU/内存24小时内峰值<80%,无OOM事件 |
四、存储系统健康检查
存储类型 | 检查项 | 参数与阈值 |
---|---|---|
PVC/PV | 绑定状态 | kubectl get pvc | grep -v Bound:所有PVC状态为Bound |
容量使用率 | PVC使用率<80%(≥80%需扩容) | |
Redis | 内存使用率 | <70%(≥95%为高风险) |
连接数 | <1024(≥4096为高风险) | |
PostgreSQL | 数据库连接数 | <1024(≥4096为高风险) |
磁盘空间 | <80%(≥80%需清理) | |
Elasticsearch | 集群状态 | green(yellow为低风险,red为高风险) |
五、网络与服务状态
检查项 | 检查命令/方法 | 参数与阈值 |
---|---|---|
Service状态 | kubectl get svc –all-namespaces | 所有Service的ClusterIP可访问,无头服务(Headless)配置正确 |
Ingress控制器 | kubectl get pods -n ingress-nginx | 控制器Pod状态为Running,规则生效 |
DNS解析 | 在集群内创建临时Pod执行nslookup kubernetes.default | 解析延迟<5s,无失败请求(coredns P99时延<5s) |
Nginx连接数 | 监控worker_connections | <1024(≥4096为高风险) |
六、配置与安全审计
- 证书有效期
- 检查API Server、etcd证书:openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -enddate
- 要求:剩余有效期 > 3个月。
- Taints/Tolerations
- kubectl describe node \| grep Taints:避免过多Taint导致调度失败。
- 资源配额
- 租户云硬盘/ECS配额使用率 <90%(≥90%需扩容)。
七、健康检查探针配置(关键!)
探针类型 | 推荐配置 | 作用与风险 |
---|---|---|
Liveness | 方式:TCP 延迟时间:≥应用启动时间 周期:10–30秒 失败阈值:3 | 失败触发容器重启;延迟过短会导致启动循环重启(如Java应用需>2分钟) |
Readiness | 方式:HTTP(返回200) 延迟时间:>应用启动时间 周期:1秒 失败阈值:1 | 失败则切出流量;快速切流避免流量损失,但需防雪崩(结合HPA使用) |
✅最佳实践:
- Liveness避免使用HTTP:防止因依赖组件(如数据库)抖动导致误重启。
- Readiness周期设为1秒:确保故障实例秒级切出流量。
八、外部依赖与配额
- 云资源配额:云硬盘/ECS使用率 <90%
- 日志系统:
- ELK日志收集一致性校验(应用日志与ELK收集一致)
- 日志ERROR率:<5%(≥10%且影响核心业务为高风险)
九、巡检工具推荐
- Popeye:自动扫描资源利用率、标签规范、安全配置,输出颜色分级报告。
- 集群内置诊断(如华为云UCS):定时巡检Master高可用、Request/Limit水位。
- Prometheus规则(示例):
yaml
# 内存泄漏警报(堆内存>80%持续10分钟)
- alert: MemoryLeak
expr: heap_used_percent > 80
for: 10m
labels:
severity: warning
``` :cite[8]
执行建议:
- 频率:核心组件/节点每日巡检,存储/网络每周巡检。
- 自动化:通过CronJob运行kubectl命令+Popeye,报告存档S3。
- 紧急处理:发现高风险项(如API Server异常)立即触发告警并介入。
此清单覆盖生产环境90%以上风险点,结合具体集群规模调整阈值。完整巡检项可参考[华为云健康诊断文档]及[K8S日常巡检指南]。