我有一个kubernetes
集群,工作正常。我有10个工作节点和1个主设备。对于容器和容器,我的文件类型为deployment.yaml
,DaemonSet
以下。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: deployment
namespace: mynamespace
spec:
replicas: 2
selector:
matchLabels:
name: deployment
template:
metadata:
labels:
name: deployment
spec:
#List of all the containers
containers:
- name: container1
image: CRname/container1
imagePullPolicy: Always
volumeMounts:
- mountPath: /share
name: share-files
securityContext:
privileged: true
- name: container2
image: CRname/container2
imagePullPolicy: Always
volumeMounts:
- mountPath: /share
name: share-files
securityContext:
privileged: true
volumes:
- name: share-files
hostPath:
path: /home/user/shared-folder
imagePullSecrets:
- name: Mysecret
nodeSelector:
NodeType: ALL
从上面开始,这两个容器开始在所有工作节点上运行,并且运行良好。但是我观察到,有时很少有节点显示为ImagePullBackOff
的错误,这意味着由于某些网络或任何其他问题,它无法下载映像。我确实使用了describe
命令来检查哪个图像失败了。但是问题是它没有尝试自动重新下载图像。我必须删除pod,因此它是自动创建的,然后工作正常。
我只想知道为什么pod会显示此错误,并且不要尝试重新下载图像。我可以在yaml
文件中添加任何内容,以便在出现任何类型的错误时自动删除并重新创建Pod。
编辑我还想问一问,当创建部署时,节点首次开始从容器注册表中提取图像。一旦将它们本地下载到节点上,为什么当图像本地存在时又必须再次拉图像?
请提出一些好的选择。谢谢。
答案 0 :(得分:1)
imagePullPolicy: Always
导致您在每次pod重启时下载映像。
并且pod总是由daemonset重新启动,因此只需再等待一点时间。