[英]How to set Kubernetes image pull retry limit
當為容器指定的映像從映像存儲庫中清除時,Kubernetes 最終會產生長時間運行的 pod。 這些部署由持續集成系統創建,有時在清除映像時運行或重新運行管道。
kubectl get pods
的狀態顯示ImagePullBackOff
。
應該在 kube config yaml 文件中設置什么來阻止這些 pod 運行數天? 理想情況下,我們只希望 Image 被拉動幾次,如果不成功則失敗。
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,在撰寫本文時控制這一點的唯一方法是使用容器規范中的imagePullPolicy 。
您可以將其設置為Never
但您的 pod 將不會運行,因為本地不存在該圖像。 或者您可以將其設置為IfNotPresent
但不知何故,您必須在您的 K8s 節點本地創建具有該特定標簽的圖像。 任一個選項都不理想,但我相信將它放入ImagePullBackOff
可能有一個理由:人們想知道為什么他們的 pod 沒有運行。
所以 IMO 更大的問題是,為什么要刪除/使 docker 注冊表中仍在集群中運行的圖像無效? 為什么不在pods/deployments/daemonsets/replicasets/statefulsets
注冊表(也稱為部署)中刪除或使圖像失效之前使用最新的圖像更新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 注冊表中刪除。 您可以刪除或覆蓋標簽: 如何從私有 docker 注冊表中刪除圖像?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.