事件会指出故障类别
ImagePullBackOff 表示 kubelet 尝试拉取镜像并反复失败。kubectl describe pod 会显示确切错误:unauthorized 指向凭证,manifest unknown 指向不存在的标签,no matching manifest 指向架构不匹配。要修复类别,而不是症状。
kubectl describe pod api-7d9f -n prod | sed -n '/Events:/,$p'
私有仓库
Pod 只能使用其 spec 或 service account 引用、且位于同一 namespace 的 imagePullSecret。确认 secret 存在、包含正确的 registry host 和凭证,并挂到 Deployment 使用的 service account 上。轮换过期凭证,避免跨 namespace 复制 secret。
标签与架构
可变标签可能指向与测试时不同的镜像。需要可复现性时,应按 digest 部署。混合架构集群要发布 multi-arch manifest;只有 amd64 的镜像在 arm64 节点上会因 manifest 错误失败。要检查 manifest,而不是假设标签可移植。
验证干净拉取
删除 Pod 让控制器重建,或用相同镜像和 secret 运行临时 Pod。确认镜像 digest 与预期构建一致,Pod 变为 Ready。某个节点上的缓存镜像可能掩盖另一个节点上的仓库或凭证问题。