如何设置Kubernetes映像拉取重试限制
当从映像存储库中清除为容器指定的映像时,Kubernetes最终会得到长时间运行的pod。这些部署是由连续集成系统创建的,有时在清除映像后运行或重新运行管道 来自如何设置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
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之前,我们将查询该图像是否存在。