k8s镜像拉取方式选择imagePullPolicy问题

 更新时间:2026年05月23日 11:10:37   作者:lswzw  
本文解释了Kubernetes中imagePullPolicy字段的默认拉取策略,包括Always、IfNotPresent和Never,帮助ubernetes如何根据镜像的标签和摘要自动设置imagePullPolicy字段,以及如何手动更改已有资源的拉取策略

镜像拉取方式选择

默认镜像拉取策略

当你(或控制器)向 API 服务器提交一个新的 Pod 时,你的集群会在满足特定条件时设置 imagePullPolicy 字段:

  • 如果你省略了 imagePullPolicy 字段,并且你为容器镜像指定了摘要, 那么 imagePullPolicy 会自动设置为 IfNotPresent。
  • 如果你省略了 imagePullPolicy 字段,并且容器镜像的标签是 :latest, imagePullPolicy 会自动设置为 Always。
  • 如果你省略了 imagePullPolicy 字段,并且没有指定容器镜像的标签, imagePullPolicy 会自动设置为 Always。
  • 如果你省略了 imagePullPolicy 字段,并且为容器镜像指定了非 :latest 的标签, imagePullPolicy 就会自动设置为 IfNotPresent。

说明:

容器的 imagePullPolicy 的值总是在对象初次 创建 时设置的, 如果后来镜像的标签或摘要发生变化,则不会更新。

例如:

  • 如果你用一个 非 :latest 的镜像标签创建一个 Deployment, 并在随后更新该 Deployment 的镜像标签为 :latest,
  • 则 imagePullPolicy 字段 不会 变成 Always。
  • 你必须手动更改已经创建的资源的拉取策略。

https://kubernetes.io/zh-cn/docs/concepts/containers/images/#image-pull-policy

官方文档:

https://kubernetes.io/docs/concepts/containers/images/

k8s-imagePullPolicy

  containers:
    - name: uses-private-image
      image: $PRIVATE_IMAGE_NAME
      imagePullPolicy: Always
      command: [ "echo", "SUCCESS" ]

k8s的配置文件中经常看到有imagePullPolicy属性

这个属性是描述镜像的拉取策略

  • Always 总是拉取镜像
  • IfNotPresent 本地有则使用本地镜像,不拉取
  • Never 只使用本地镜像,从不拉取,即使本地没有

如果省略imagePullPolicy  策略为always 

​总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • k8s中topologyKey的作用及说明

    k8s中topologyKey的作用及说明

    topologyKey定义拓扑域,用于Pod亲和/反亲和性规则,调度器根据其分组节点,当前配置仅强制节点标签匹配,未限制副本数量,建议补充podAntiAffinity实现隔离
    2025-08-08
  • 通过kubernetes部署nginx+php网站环境过程

    通过kubernetes部署nginx+php网站环境过程

    本文详细介绍了如何在Kubernetes中部署Nginx+PHP网站环境,包括环境准备、部署步骤、Service、ConfigMap、Ingress等配置,并提供了具体的YAML文件示例和命令,通过这些步骤,可以实现高可用、可扩展的Web服务
    2026-01-01
  • kubeadm部署k8s集群全过程

    kubeadm部署k8s集群全过程

    本文详细描述了如何在VMware虚拟机上基于CentOS8操作系统搭建Kubernetes集群,包括环境准备、Docker安装、Kubernetes组件安装、网络插件配置以及KuboardUI的安装和访问
    2025-01-01
  • kubectl 命令详解

    kubectl 命令详解

    这篇文章主要介绍了kubectl 命令的相关资料,包括常用命令,基本命令和使用说明,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-04-04
  • K8S加入新的node节点实现方式

    K8S加入新的node节点实现方式

    文章主要介绍了基于kubeadm安装的k8s集群加入新的节点的过程,包括初始化节点、安装Docker和相关组件、配置镜像下载加速器、添加软件源、安装组件、上传和解压镜像、加入新的节点并查看节点状态等步骤
    2026-04-04
  • k8s通过命令批量删除pod方式

    k8s通过命令批量删除pod方式

    文章介绍了如何在k8s中批量删除失败的pod,首先,通过查看所有pod的状态,筛选出非Running的记录,然后,针对特定命名空间(如kube-system)的记录进行筛选,并使用grep命令查找带有Evicted字段的pod,通过awk获取pod名称,并使用xargs循环删除这些失败的pod
    2026-01-01
  • K8s Pod容器中的command和args指令详解

    K8s Pod容器中的command和args指令详解

    这篇文章主要介绍了K8s新手系列之Pod容器中的command和args指令的相关资料,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-05-05
  • OSS获取阿里云的bucket和endpoint实现方式

    OSS获取阿里云的bucket和endpoint实现方式

    本文介绍了获取阿里云OSS的bucket和endpoint的方法,这两个参数决定了文件的最终访问地址,bucket是OSS项目名称,endpoint是存储服务器位置,此外,还提到了OSS的文件管理与域名管理功能
    2026-03-03
  • 一文讲解如何获取k8s容器里运行的jar包

    一文讲解如何获取k8s容器里运行的jar包

    K8S是Google开源的容器集群管理系统,其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台,这篇文章主要给大家介绍了关于如何获取k8s容器里运行的jar包的相关资料,需要的朋友可以参考下
    2022-09-09
  • 云服务器Jenkins部署Springboot项目及Vue项目的详细过程

    云服务器Jenkins部署Springboot项目及Vue项目的详细过程

    本文详细介绍了如何在云服务器上使用Jenkins部署Springboot和Vue项目,包括创建Springboot项目并上传到Git仓库、安装Maven和配置Maven插件、安装Gitee插件、配置Jenkins任务以及创建自由风格项目等步骤,感兴趣的朋友一起看看吧
    2025-02-02

最新评论