ImagePullBackOff:镜像拉取失败的系统排查

从镜像名称、仓库认证、节点网络、架构和运行时缓存定位 ImagePullBackOff。

文章目录 · 4 节

ImagePullBackOff 是 kubelet 在连续拉取失败后的退避状态,真正原因通常在 Pod 事件中。

kubectl describe pod <POD> -n <NS>
kubectl get secret -n <NS>
kubectl get serviceaccount <SA> -n <NS> -o yaml

按错误类型处理

manifest unknown 检查 tag 或 digest;unauthorized 检查 imagePullSecret 与仓库权限;网络超时则从出问题的节点测试 DNS、路由和代理。

在节点上复现

crictl pull registry.example.com/team/app@sha256:<DIGEST>
journalctl -u containerd --since '-20m'

只有部分节点失败时,对比运行时配置、CA 证书、代理和磁盘空间。ARM 与 AMD64 混合集群还要确认镜像 manifest 包含目标架构。

发布策略

生产发布优先使用不可变 digest,避免相同 tag 指向不同内容。新版本发布前预拉取大镜像,并监控仓库限流和节点镜像文件系统容量。

不建议的做法

不要通过反复删除 Pod 来“解决”拉取错误,这只会重置退避并增加仓库压力。修复根因后,kubelet 会自动重试。