问题出现得很突然,日志倒是留得挺全。新版本发布后 Pod 卡在拉取镜像状态,节点上手动拉取提示认证失败,可镜像仓库地址是能访问的。
把日志和配置对完,能解释这个现象的基本就这几处。私有仓库凭据没有配置或者已过期。另一种情况是镜像地址与标签写错,仓库里不存在。
不容易想到的是,节点到仓库的网络受限。
先看事件里的具体报错
kubectl describe pod 名称 | grep -A3 Events
再往下确认凭据配置
kubectl get secret 仓库凭据 -o yaml
接着在节点上手动验证拉取
docker pull 镜像地址:标签
修正后重新部署
kubectl rollout restart deploy/应用名
改之前我把相关日志按时间截了一段存着,事后对时间线用得上。
改完先别撤,确认这几项。Pod 能正常拉取镜像并启动,事件里不再出现认证失败。
凭据过期是最常见原因,换凭据后要确认工作负载引用的是新的那个;镜像标签用固定版本比最新标签可靠。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。