Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置Kubernetes映像拉取重试限制_Kubernetes_Kubernetes Container - Fatal编程技术网

如何设置Kubernetes映像拉取重试限制

如何设置Kubernetes映像拉取重试限制,kubernetes,kubernetes-container,Kubernetes,Kubernetes Container,当从映像存储库中清除为容器指定的映像时,Kubernetes最终会得到长时间运行的pod。这些部署是由连续集成系统创建的,有时在清除映像后运行或重新运行管道 来自kubectl get pods的状态显示ImagePullBackOff 在kube-config-yaml文件中应该设置什么来阻止这些pod运行几天?理想情况下,我们只希望图像被拉几次,如果不成功,就会失败 pod的定义是 apiVersion: v1 kind: Pod metadata: name: test-missing

当从映像存储库中清除为容器指定的映像时,Kubernetes最终会得到长时间运行的pod。这些部署是由连续集成系统创建的,有时在清除映像后运行或重新运行管道

来自
kubectl get pods
的状态显示
ImagePullBackOff

在kube-config-yaml文件中应该设置什么来阻止这些pod运行几天?理想情况下,我们只希望图像被拉几次,如果不成功,就会失败

pod的定义是

apiVersion: v1
kind: Pod
metadata:
  name: test-missing-image

spec:
  containers:

  - image: missingimage

    name: test
    resources:
      limits:
        memory: "10000Mi"
    readinessProbe:
      httpGet:
        port: 5678
        path: /somePath
      initialDelaySeconds: 360
      periodSeconds: 30
      timeoutSeconds: 30

  restartPolicy: Never
  terminationGracePeriodSeconds: 0

谢谢

AKAIK,在撰写本文时,控制这一点的唯一方法是使用容器规范中的

您可以将其设置为
从不
,但pod将不会运行,因为图像在本地不存在。或者您可以将其设置为
IfNotPresent
,但无论如何,您必须在K8s节点本地创建一个带有该特定标记的图像。这两种选择都不理想,但我相信让它进入
ImagePullBackOff
:人们会想知道为什么他们的pod没有运行

因此,更大的问题是,为什么要删除/使docker注册表中仍在集群中运行的图像无效?在删除docker注册表(也称为部署)中的映像或使其无效之前,为什么不使用最新映像更新
pods/deployments/daemonsets/replicasets/statefulsets

一般做法可以是这样的:

create new image => deploy it => make sure everything is ok => 
{
  ok => invalidate the old image tag.
  not ok => rollback => delete new image tag => go back to create new image => create new image tag.
}

注意,docker注册表中不会删除图层和图像。您可以删除或覆盖标记:

为什么需要它?我真的不明白。拥有任何k8s资源(如部署或状态集)有什么好处?它们无法启动,但存在于集群中?我们正在创建kubernetes部署,作为持续集成管道的一部分。因此,如果依赖图像的年龄大于阈值年龄,则有时会丢失这些图像。谢谢,在创建pod之前,我们将查询该图像是否存在。