本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 Pod 驱逐时间
在控制平面或可用区故障场景中设计弹性时,Pod 驱逐时间非常有用。在可用区故障测试期间,子网失去网络连接,所有受影响的 Amazon EKS 节点都将失去与 Amazon EKS 控制平面的连接。在 1 分钟内,所有受影响的 Amazon EKS 节点都将标有NotReady
状态,pod 终端节点或 EndpointSlices 已从服务终端节点中移除。但是,在受影响节点上运行的所有 Pod 都会在默认的 5 分钟内保持该running
状态。然后将 pod 标记为TERMINATING
,并调度新的 pod。
Kubernetes 控制器管理器中的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