[英]Set Pod Restart Limit
我們可以像 Kubernetes 中的 Docker swarm 一樣設置 Pod Restart Limit嗎?
Docker 群重啟策略:
condition: any
delay: 60s
max_attempts: 2
window: 60s
或任何其他方式,因為 k8s 類型的 Deployment 不支持 Restart Policy never
或onfailure
我的 Deployment.yaml:-
apiVersion: apps/v1
kind: Deployment
metadata:
name: xyz
labels:
app: xyz
spec:
replicas: 1
selector:
matchLabels:
app: xyz
template:
metadata:
labels:
app: xyz
spec:
containers:
- name: xyz
image: x.y.z
imagePullPolicy: IfNotPresent
imagePullSecrets:
- name: x
restartPolicy: Never
錯誤is invalid: spec.template.spec.restartPolicy: Unsupported value: "Never": supported values: "Always"
運行kubectl run --help | grep restart
kubectl run --help | grep restart
你會看到有一個restartpolicy設置如下
--restart='Always': The restart policy for this Pod.
Legal values [Always, OnFailure, Never].
If set to 'Always' a deployment is created, if set to 'OnFailure' a job is created,
if set to 'Never', a regular pod is created.
For the latter two --replicas must be 1. Default 'Always', for CronJobs `Never`.
maxRetries
還有一個新選項
$ cat pod_retry.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
restartPolicy: "OnFailure"
maxRetries: "3" // Max retries is 3
containers:
- image: nginx:1.7.9
name: test-pod
command:
- /bin/ls
- hello
不幸的是,這是不可能的。 在官方文檔中它提到它只允許Always
。
僅允許
.spec.template.spec.restartPolicy
等於Always
,如果未指定,則為默認值。
DaemonSet
和StatefulSet
情況相同。
與Deployment
概念有關,所有 Pod 必須處於Running
狀態,Pod 不能失敗或無響應。
部署代表一組多個相同的 Pod,沒有唯一的身份。 Deployment 運行應用程序的多個副本,並自動替換任何失敗或無響應的實例。 通過這種方式,部署有助於確保您的應用程序的一個或多個實例可用於滿足用戶請求。 部署由 Kubernetes 部署控制器管理。
默認情況下, Deployment
自動創建ReplicaSet ,它也負責處理 Pod 的狀態。
ReplicaSet 由字段定義,包括一個選擇器,指定如何識別它可以獲取的 Pod,多個副本指示它應該維護多少個 Pod,以及一個 Pod 模板,指定它應該創建的新 Pod 的數據以滿足數量副本標准。 然后,ReplicaSet 通過根據需要創建和刪除 Pod 以達到所需數量來實現其目的。 當 ReplicaSet 需要創建新的 Pod 時,它會使用它的 Pod 模板。
只有pod
和job
類型能夠使用帶有Never
和onFailure
值的restartPolicy
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.