Konfigurieren Sie die Zeit für die Pod-Räumung - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren Sie die Zeit für die Pod-Räumung

Die Zeit für die Räumung des Pods ist nützlich, wenn es darum geht, die Ausfallsicherheit in einem Ausfallszenario auf der Kontrollebene oder in der Availability Zone zu gewährleisten. Während der Availability Zone-Ausfalltests, bei denen die Subnetze die Netzwerkkonnektivität verlieren, verlieren alle betroffenen Amazon EKS-Knoten die Konnektivität zu den Amazon EKS-Steuerebenen. Innerhalb einer Minute sind alle betroffenen Amazon EKS-Knoten mit dem NotReady Status und den Pod-Endpunkten gekennzeichnet oder EndpointSlices wurden von den Service-Endpunkten entfernt. Alle Pods, die auf den betroffenen Knoten ausgeführt werden, behalten jedoch für die Standardeinstellung 5 running Minuten ihren Status. Dann werden die Pods als TERMINATING markiert und neue Pods werden geplant.

Der pod-eviction-timeout Parameter im Kubernetes Controller Manager ist standardmäßig auf 5 Minuten festgelegt und kann über die Kubernetes-Steuerebene aktualisiert werden. Da Amazon EKS jedoch ein verwalteter Kubernetes-Service pod-eviction-timeout ist, kann er nicht geändert werden.

Um dieses Problem zu umgehen, können Sie Node Taint-Based Evictions verwenden. Wenn ein Knoten ausfällt oder das Kubelet den Status nicht mehr veröffentlicht, wird der Knoten mit node.kubernetes.io/unreachable verunreinigt. Pods tolerieren diesen Makel standardmäßig für 5 Minuten, aber Sie können ihn mit einer Standard-Toleranz für mehr oder weniger Zeit außer Kraft setzen. Um eine benutzerdefinierte Toleranzdauer zu definieren, fügen Sie jeder Bereitstellung Code hinzu, der das tolerationSeconds für node.kubernetes.io/unreachable und die node.kubernetes.io/not-ready Werte angibt. Der folgende Code enthält ein Beispiel:

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