🔥 故障实验室
Troubleshooting Lab
这里记录在 Linux、Docker、Kubernetes 云原生环境中的真实问题排查过程。
运维能力不仅是部署服务。
更重要的是:
当系统出现异常时,能够快速定位原因并恢复服务。
🧩 我的故障排查方法
面对问题,我通常按照:
现象
↓
定位范围
↓
收集信息
↓
分析原因
↓
解决问题
↓
总结优化Kubernetes故障案例
01 Pod一直处于Pending状态
故障现象
创建Deployment后:
kubectl get pod发现:
NAME STATUS
nginx-xxx PendingPod无法正常运行。
排查过程
查看Pod详情:
kubectl describe pod pod-name重点查看:
Events可能原因:
节点资源不足
节点不可调度
污点限制
调度规则冲突
解决思路
检查节点:
kubectl get nodes检查污点:
kubectl describe node检查资源:
kubectl describe pod经验总结
Pod Pending并不是应用问题。
首先应该判断:
是调度失败,还是容器启动失败。
02 ImagePullBackOff 镜像拉取失败
故障现象
Pod状态:
ImagePullBackOff或者:
ErrImagePull排查
查看事件:
kubectl describe pod发现:
Failed to pull image原因分析
可能原因:
1. 镜像不存在
例如:
image name错误2. 镜像仓库访问失败
例如:
TLS handshake timeout3. 私有仓库认证失败
需要:
imagePullSecrets解决方式
方式:
修改正确镜像地址
配置镜像加速
提前导入镜像
总结
生产环境中:
镜像问题是最常见故障之一。
排查顺序:
Pod状态
↓
describe事件
↓
镜像仓库
↓
网络
↓
权限03 Node NotReady 节点异常
故障现象
查看:
kubectl get node发现:
worker01
NotReady排查
查看节点:
kubectl describe node worker01关注:
Conditions
Taints可能原因:
kubelet异常
CNI网络异常
节点资源不足
网络不可达
处理方式
检查:
systemctl status kubelet查看:
journalctl -u kubelet恢复:
systemctl restart kubeletDocker故障案例
04 Docker镜像拉取失败
故障现象
执行:
docker pull出现:
TLS handshake timeout排查
测试网络:
curl registry-1.docker.io检查:
cat /etc/docker/daemon.json解决
配置镜像源:
{
"registry-mirrors":[
"镜像地址"
]
}重启:
systemctl restart dockerLinux故障案例
05 软件源异常
故障现象
执行:
dnf install出现:
SSL connect error原因
国外源访问异常。
解决
切换:
国内镜像源
阿里云镜像
刷新:
dnf clean all
dnf makecache我的故障排查原则
第一原则:
不要猜。
使用:
日志
↓
现象
↓
数据
↓
判断第二原则:
先恢复服务,再优化。
生产环境:
稳定优先。
第三原则:
每一次故障都应该留下记录。
因为:
故障是提升运维能力最快的方式。