首页 > 解决方案 > ImgPullBackOff 失败时 kubernetes pod 是否会重启

问题描述

我有一个kubernetes集群工作得很好。我有 10 个工作节点和 1 个主设备。对于 pod 和容器,我有以下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。

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

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

标签: kubernetes

解决方案


imagePullPolicy: Always导致您每次重新启动 pod 时都会下载图像。

并且 Pod 总是由 daemonset 重新启动,所以请稍等片刻。


推荐阅读