k8s中镜像下载策略有哪些
Kubernetes镜像下载策略完全指南
📦 核心策略三剑客
containers:
- name: app
image: myregistry/app:v1.2.3
imagePullPolicy: IfNotPresent # 策略开关
1. Always(强制更新)
- 适用场景:持续交付流水线、开发测试环境
- 触发条件:
- 镜像标签为
latest - 镜像未指定标签(隐式latest)
- 显式声明该策略
- 镜像标签为
- 典型问题:
# 某次部署突然失败,原因是: Error: ImagePullBackOff (仓库凭据失效/网络隔离)
2. IfNotPresent(智能缓存)
- 最佳实践:
- 生产环境推荐策略
- 搭配具体版本标签使用(如v1.2.3)
- 缓存机制:graph LR A[Pod创建] --> B{本地有镜像?} B -->|是| C[直接启动] B -->|否| D[拉取镜像并缓存]
3. Never(离线模式)
- 使用禁区警告:
- 不要与Deployment动态更新混用 + 适用场景:Air-gapped环境/本地构建系统 - 预置镜像检查脚本:
# 节点初始化时自动执行 docker images | grep myregistry/app || exit 1
⚠️ 隐藏的版本陷阱(真实案例)
当镜像仓库存在相同标签的不同内容时:
# 开发误操作示例:
docker push myregistry/app:v1.2.3 # 推送了不兼容的代码
Always策略:立即获取问题镜像导致故障IfNotPresent:继续使用旧镜像(可能延缓问题爆发)
🛠 生产环境配置公式
安全部署 = 具体版本标签 + IfNotPresent策略 + 镜像签名验证
持续交付 = 唯一版本号(如git-sha) + Always策略
浙公网安备 33010602011771号