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 会自动重试。