预约咨询 提交工单

Kubernetes 事件响应:在节点磁盘压力下保持集群可靠性

一套实用的故障排查指南,帮助你在 Kubernetes 节点出现磁盘压力时快速诊断、恢复并避免数据丢失,同时明确何时需要升级为 OpsGlobal 专业支持。

Kubernetes 事件响应:在节点磁盘压力下保持集群可靠性
Kubernetes 6min 2 浏览 2026-08-11
KubernetesSRE事件响应磁盘压力

场景

凌晨 3 点,PagerDuty 响起:生产环境的核心支付服务错误率超过 2%,多个 Pod 正在被终止。登录集群后,你发现部分 Pod 处于 CrashLoopBackOff 或 Evicted 状态,其中一个节点的工作状态显示为 DiskPressure。这是典型的节点磁盘压力事件,可能由容器日志爆炸、临时卷占用或 inode 耗尽引起。

症状

  • 终端用户看到 503 或 504 错误;
  • Prometheus 告警 HighErrorRate 触发;
  • kubectl get pods -n checkout 显示大量 CrashLoopBackOff;
  • kubectl get nodes 显示某个节点处于 DiskPressureNotReady
  • 节点事件中出现 The node was low on resource: disk

诊断

  1. 首先查看全局事件:

bash kubectl get events --all-namespaces --sort-by=.lastTimestamp

  1. 检查节点状态:

bash kubectl describe node worker-3 | grep -A5 Conditions

如果看到 DiskPressure=True,说明磁盘容量或 inode 不足。

  1. 登录节点或使用 kubectl debug node/worker-3 -it --image=busybox 进入节点,检查磁盘和 inode 使用率:

bash df -h df -i

  1. 定位占用磁盘的 Pod:查看被驱逐 Pod 的事件:

bash kubectl describe pod checkout-xyz -n checkout | grep -A3 Events

  1. 查看容器日志是否有大量写入:

bash kubectl logs checkout-xyz --previous -n checkout

  1. 在节点上检查 kubelet 日志,确认驱逐决策:

bash journalctl -u kubelet --since "30 min ago" | grep -i evict

安全与风险控制

  • 切勿删除 PersistentVolume(PV)或 PersistentVolumeClaim(PVC),除非已确认备份。驱逐 Pod 可恢复,数据丢失则不可逆。
  • 不要使用 kubectl delete node 强制移除节点,这会导致工作负载无法调度。
  • 使用 kubectl drain 时,请先确认 DaemonSet 容忍度或使用 --ignore-daemonsets=false,避免宕机。
  • 避免手动删除 Pod,除非它由 Deployment/StatefulSet 管理,否则可能造成服务中断。

回滚

如果你通过扩缩容或修改资源参数作为临时缓解,需要按原配置回滚:

kubectl scale deployment checkout --replicas=3
kubectl rollout undo deployment/checkout

若只是驱逐了 Pod,Deployment 会重新创建,无需额外回滚。

验证

  • 确认 Pod 恢复:kubectl get pods -n checkout 显示 Running 且 READY。
  • 确认节点条件:kubectl describe node worker-3 | grep -A3 Conditions 显示 DiskPressure=False
  • 观察 Grafana 中的应用错误率下降。
  • 检查日志输出:kubectl logs -n checkout deployment/checkout --tail=20

何时提交 OpsGlobal 工单

  • 疑似控制平面故障(etcd 不可用、API Server 无响应);
  • 多个节点同时进入 NotReady 状态;
  • 出现 etcdserver: request timed out 错误;
  • 事件持续时间超过 30 分钟且无法定位根因;
  • 存在持久化数据损坏风险。

OpsGlobal 提供 24/7 专家的远程介入,帮助你快速恢复集群并降低业务影响。

适用场景

适合正在处理 Kubernetes、Kubernetes, SRE, 事件响应, 磁盘压力 相关问题的团队,用于快速建立排查路径和交付标准。

问题背景

一套实用的故障排查指南,帮助你在 Kubernetes 节点出现磁盘压力时快速诊断、恢复并避免数据丢失,同时明确何时需要升级为 OpsGlobal 专业支持。

排查步骤

先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。

命令示例

示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。

风险说明

生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。

回滚方案

保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。

交付清单

问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。

!

遇到类似技术问题?

如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。

工单 WhatsApp 联系 咨询