kubernetes pod是否在ImgPullBackOff

时间:2018-07-14 13:45:48

标签: kubernetes

我有一个kubernetes集群,工作正常。我有10个工作节点和1个主设备。对于容器和容器,我的文件类型为deployment.yamlDaemonSet以下。

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。

编辑我还想问一问,当创建部署时,节点首次开始从容器注册表中提取图像。一旦将它们本地下载到节点上,为什么当图像本地存在时又必须再次拉图像?

请提出一些好的选择。谢谢。

1 个答案:

答案 0 :(得分:1)

imagePullPolicy: Always导致您在每次pod重启时下载映像。

并且pod总是由daemonset重新启动,因此只需再等待一点时间。