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策略

posted on 2025-02-09 22:52  Leo-Yide  阅读(60)  评论(0)    收藏  举报