Always: 每次创建 Pod 时都会从仓库下载镜像
bash
imagePullPolicy: Always
**IfNotPresent:**如果本地已经存在该镜像,则使用本地;如果不存在则会去远程仓库拉取
bash
imagePullPolicy: IfNotPresent
Never: 始终只依赖本地存在的镜像,绝不会尝试连接到任何外部仓库进行拉取操作
bash
imagePullPolicy: Never
bash
实际案例展示
下面是一个简单的例子展示了怎样设置不同的镜像拉取策略:
Yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx-container
image: nginx:latest
imagePullPolicy: Always # 这里可以替换为 IfNotPresent 或 Never
当设置了 imagePullPolicy: Always 的时候,即使节点上有相同标签 (tag) 的旧版镜像也会被覆盖掉以获得最新的可用版本。这对于开发环境特别有用,在那里频繁迭代应用程序是很常见的事情。
而生产环境中通常建议采用更为保守的方式比如 IfNotPresent, 因为这样可以在一定程度上减少不必要的网络流量消耗以及加速Pod初始化速度。
需要注意的是,当指定了 Never 方式时一定要确认目标机器确实拥有对应的 Docker 镜像文件,否则 Pod 将无法成功调度执行。