Administrator
发布于 2026-07-09 / 3 阅读

故障实验室

🔥 故障实验室

Troubleshooting Lab

这里记录在 Linux、Docker、Kubernetes 云原生环境中的真实问题排查过程。

运维能力不仅是部署服务。

更重要的是:

当系统出现异常时,能够快速定位原因并恢复服务。


🧩 我的故障排查方法

面对问题,我通常按照:

现象

↓

定位范围

↓

收集信息

↓

分析原因

↓

解决问题

↓

总结优化

Kubernetes故障案例

01 Pod一直处于Pending状态

故障现象

创建Deployment后:

kubectl get pod

发现:

NAME              STATUS

nginx-xxx         Pending

Pod无法正常运行。


排查过程

查看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 timeout

3. 私有仓库认证失败

需要:

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 kubelet

Docker故障案例

04 Docker镜像拉取失败

故障现象

执行:

docker pull

出现:

TLS handshake timeout

排查

测试网络:

curl registry-1.docker.io

检查:

cat /etc/docker/daemon.json

解决

配置镜像源:

{
 "registry-mirrors":[
 "镜像地址"
 ]
}

重启:

systemctl restart docker

Linux故障案例

05 软件源异常

故障现象

执行:

dnf install

出现:

SSL connect error

原因

国外源访问异常。


解决

切换:

  • 国内镜像源

  • 阿里云镜像

刷新:

dnf clean all

dnf makecache

我的故障排查原则

第一原则:

不要猜。

使用:

日志

↓

现象

↓

数据

↓

判断

第二原则:

先恢复服务,再优化。

生产环境:

稳定优先。


第三原则:

每一次故障都应该留下记录。

因为:

故障是提升运维能力最快的方式。