我的yaml中定义了两个容器,两者都有最新的图像拉动。
然而,当部署pod时,第二个容器无法启动,kubernetes中的pod yaml声明它们都具有相同的图像ID。
spec:
containers:
- name: 1st
image: "x/abc:latest"
imagePullPolicy: "Never"
ports:
- containerPort: 8080
- containerPort: 5005
volumeMounts:
- name: config-volume
mountPath: /config
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
env:
- name: JVM_DEBUG
value: "True"
- name: second
image: "x/def:latest"
imagePullPolicy: "Never"
ports:
- containerPort: 9998
volumeMounts:
- name: config-volume
mountPath: /config
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
volumes:
- name: config-volume
configMap:
name: abc-RELEASE
任何想法?
答案 0 :(得分:0)
我认为你在这里混合了两个概念:图像拉动政策和图像标签。
图像拉取策略告诉kubernetes何时希望它尝试下载容器图像。
由于您使用的是instanceof CustomError
ImagePullPolicy
,因此该图像必须已存在于kubernetes节点上:kubernetes不会尝试下载该图像。
除了Never
,您还可以选择Never
或Always
。除非您有充分的理由选择IfNotPresent
,否则我会尽可能选择Never
。
另一方面,您选择了IfNotPresent
图片代码。这是在尝试创建容器时kubernetes节点上必须存在的确切标记。
此外,在您的示例yaml中,您使用了两个不同的图像:latest
和x/abc
。因此,两个图像必须存在,否则容器将无法由kubernetes创建。