本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Pod 移出時間
在控制平面或可用區域故障案例中設計彈性時,Pod 移出時間非常有用。在可用區域故障測試期間,子網路失去網路連線時,所有受影響的 Amazon EKS 節點都會失去與 Amazon EKS 控制平面的連線。在 1 分鐘內,所有受影響的 Amazon EKS 節點都會標示 NotReady
狀態,而且已從服務端點移除 Pod 端點或 EndpointSlices。不過,在受影響節點上執行的所有 Pod 都會維持在預設 5 分鐘running
的狀態。然後,Pod 會標記為 TERMINATING
,並排定新的 Pod。
Kubernetes Controller Manager 內的 pod-eviction-timeout
參數預設為 5 分鐘,並且可以透過 Kubernetes 控制平面更新。不過,由於 Amazon EKS 是受管 Kubernetes 服務,pod-eviction-timeout
因此無法修改。
對於解決方法,您可以使用節點污點型移出node.kubernetes.io/unreachable
和 node.kubernetes.io/not-ready
值tolerationSeconds
的程式碼連接至每個部署。下列程式碼提供範例:
apiVersion: apps/v1 kind: Deployment metadata: name: busybox namespace: default spec: replicas: 2 selector: matchLabels: app: busybox template: metadata: labels: app: busybox spec: tolerations: - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 2 - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 2 containers: - image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent name: busybox restartPolicy: Always