KubernetesSRELinux运维手册排障
概述
在生产环境中,故障不可避免。SRE运维手册(Runbook)是保障服务可靠性的关键工具。本文以Kubernetes集群中的Pod频繁重启为例,展示从发现症状到自动化响应的完整排障流程。
场景
某微服务应用在Kubernetes集群中运行,Pod状态显示CrashLoopBackOff。
症状
- Pod状态:
CrashLoopBackOff - 日志:
OutOfMemoryError或进程被OOM Killer终止 - 监控告警:内存使用率持续超过阈值
诊断步骤
- 查看Pod状态
bash kubectl get pods -n <namespace> | grep -v Running - 检查Pod日志
bash kubectl logs <pod-name> -n <namespace> --previous - 描述Pod事件
bash kubectl describe pod <pod-name> -n <namespace> - 检查节点资源
bash kubectl top nodes kubectl top pods -n <namespace> - 分析内存使用
bash # 登录到容器(如果还在运行) kubectl exec -it <pod-name> -n <namespace> -- bash # 查看进程内存 ps aux --sort=-%mem | head -n 10
风险控制
- 在非高峰期操作,避免影响用户。
- 先行资源配额调整:
kubectl edit deployment <deployment>,增加内存限制。 - 禁止直接删除有状态Pod,应先评估。
- 使用
kubectl cordon <node>隔离故障节点。
回滚方案
- 确认问题为最近一次变更所致。
- 回滚部署:
bash kubectl rollout undo deployment/<deployment> -n <namespace> - 若回滚失败,使用历史版本:
bash kubectl rollout history deployment/<deployment> -n <namespace> kubectl rollout undo deployment/<deployment> --to-revision=<revision>
验证措施
- 检查Pod状态变为Running且稳定。
- 监控内存使用曲线是否恢复正常。
- 执行正常流量测试。
何时提交OpsGlobal工单
- 多次回滚后问题依旧。
- 涉及底层系统配置(如内核参数、文件系统)。
- 需要性能调优或架构审查。
- 非工作时间需要快速响应。
通过结构化运维手册,SRE团队可以提升故障响应效率,减少MTTR。对于复杂问题,及时寻求专家支持是关键。
适用场景
适合正在处理 DevOps、Kubernetes, SRE, Linux, 运维手册 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
本文深入探讨如何构建实用的Linux SRE运维手册,涵盖生产环境排障的完整流程:场景分析、症状识别、诊断命令、风险控制、回滚策略、验证步骤,以及何时联系OpsGlobal专家。适用于Kubernetes环境下的SRE实践。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。