Configurer l'heure d'expulsion du pod - AWS Directives prescriptives

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer l'heure d'expulsion du pod

Le temps d'éviction des pods est utile lors de la conception d'un plan de résilience dans un scénario de défaillance du plan de contrôle ou de la zone de disponibilité. Lors des tests de défaillance de la zone de disponibilité, lorsque les sous-réseaux perdent leur connectivité réseau, tous les nœuds Amazon EKS concernés perdent leur connectivité aux plans de contrôle Amazon EKS. En moins d'une minute, tous les nœuds Amazon EKS concernés sont marqués du NotReady statut et les points de terminaison du pod ont été ou EndpointSlices ont été supprimés des points de terminaison du service. Cependant, tous les pods exécutés sur les nœuds concernés restent au running statut par défaut pendant les 5 minutes. Les pods sont ensuite marqués comme telsTERMINATING, et de nouveaux pods sont programmés.

Le pod-eviction-timeout paramètre du Kubernetes Controller Manager est défini par défaut sur 5 minutes et peut être mis à jour via le plan de contrôle Kubernetes. Toutefois, Amazon EKS étant un service Kubernetes géré, il n'pod-eviction-timeoutest pas possible de le modifier.

Pour contourner le problème, vous pouvez utiliser des expulsions basées sur l'altération des nœuds. Lorsqu'un nœud tombe en panne ou que le kubelet arrête de publier le statut, le nœud est contaminé par node.kubernetes.io/unreachable. Par défaut, les capsules tolèrent cette odeur pendant 5 minutes, mais vous pouvez la remplacer par une tolérance d'odeur standard pendant plus ou moins longtemps. Pour définir une durée de tolérance personnalisée, joignez un code qui spécifie la forme node.kubernetes.io/unreachable et tolerationSeconds les node.kubernetes.io/not-ready valeurs de chaque déploiement. Le code suivant fournit un exemple :

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