kubectl get pod api-7f9 -o jsonpath='{.spec.containers[0].imagePullPolicy}'
kubectl describe pod api-7f9 | grep -A5 Events
kubectl set image deploy/api api=registry.local/api:2.1
同一个节点上重启 Pod,从删除到 Ready 要 3 分 20 秒,事件里全是 Pulling image。节点上早就有一模一样的镜像 ID。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:Always 策略每次启动都要向仓库确认 digest,网络慢或者仓库限流时这一步要等几十秒到几分钟。本地已有镜像也不会跳过这次确认。
「imagePullPolicy Always」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
处理上按这个顺序:先看 Pod 的 imagePullPolicy 是不是被写成了 Always;固定 tag 的镜像改成 IfNotPresent 只在本地没有时拉取;用 digest 引用镜像 既固定版本又能安全走缓存;确认节点到仓库的网络和限流 别把慢归到应用启动上。
确认没问题再收工,事件里不再出现 Pulling,Pod 启动时间回到 30 秒内。
