在 Kubernetes (k8S) 中,镜像下载策略主要体现在 imagePullPolicy
这个字段上,它控制了 Pod 中容器镜像的拉取行为。以下是三种不同的 imagePullPolicy
策略:
-
Always:
- 当
imagePullPolicy
设置为Always
时,每次创建新 Pod 或重启 Pod 中的容器时,Kubernetes 都会尝试从指定的 registry 下载容器镜像。即使本地节点上已经存在该镜像的缓存版本,也会重新下载以确保使用的是最新版本。 - 默认情况下,对于没有明确设置
imagePullPolicy
的镜像且其标签是latest
的,Kubernetes 也会默认采用此策略。
- 当
-
IfNotPresent:
- 如果
imagePullPolicy
设置为IfNotPresent
,Kubernetes 在启动容器时只会检查本地节点是否已经有这个镜像。如果镜像已存在于节点上,则直接使用本地镜像;若不存在,则从 registry 拉取镜像。 - 这种策略适用于不需要每次都获取最新镜像、而是依赖于节点上已有缓存的情况。
- 如果
-
Never:
- 当
imagePullPolicy
设置为Never
时,Kubernetes 将完全避免尝试从 registry 下载镜像,仅使用本地已有的镜像来启动容器。如果本地没有对应镜像,则容器将无法启动。 - 这种策略一般用于确定集群中所有节点都已经预先拉取并保存有特定版本的镜像场景,或者是测试环境里为了避免不必要的网络传输和节省带宽资源。
- 当
综上所述,这些策略可以根据实际应用需求,在 Pod 定义中的容器配置部分进行设定。例如,在 spec.containers[].imagePullPolicy
字段内指定策略。