K8S 镜像拉取策略

  • 定义:在 Kubernetes 中,镜像拉取策略(ImagePullPolicy)用于控制容器镜像的拉取方式
  • 使用:可以在 Pod 的定义中通过 imagePullPolicy 来指定策略
    • Always:每次容器启动时都会拉取镜像,无论镜像是否已经存在于节点上
    • IfNotPresent:如果本地节点上已经存在该镜像,Kubernetes 会使用本地镜像,不会从远程拉取
    • Never:永远不会从远程仓库拉取镜像,直接使用本地镜像,如果本地没有该镜像,Pod 启动会失败
  • 默认
    • 如果你使用的是 标记了版本号的镜像(例如:nginx:1.19),默认使用 IfNotPresent 策略
    • 如果你使用的是 latest 标签的镜像(例如:nginx:latest),默认使用 Always 策略
      • 而 docker 就针对 latest 没有特殊处理,本地有 → 不拉取,本地没有 → 拉取

注意一个大坑,流水线部署,如果推送一个具体版本的镜像,比如 v1.5,由于拉取策略默认是 IfNotPresent,而且 yaml 文件本身也没有变化,因此执行流水线不会生效!解决方案很简单,可以改镜像拉取策略为 Always