Configure la hora de desalojo del pod - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configure la hora de desalojo del pod

El tiempo de desalojo del módulo es útil cuando se diseña para garantizar la resiliencia en un escenario de fallo en el plano de control o en una zona de disponibilidad. Durante las pruebas de error de la zona de disponibilidad, en las que las subredes pierden la conectividad de la red, todos los nodos de Amazon EKS afectados pierden la conectividad con los planos de control de Amazon EKS. En 1 minuto, todos los nodos de Amazon EKS afectados se marcan con el NotReady estado y los puntos de enlace del pod o se EndpointSlices han eliminado de los puntos de enlace del servicio. Sin embargo, todos los pods que se ejecutan en los nodos afectados permanecen en ese running estado durante los 5 minutos predeterminados. A continuaciónTERMINATING, los módulos se marcan como y se programan nuevos módulos.

El pod-eviction-timeout parámetro del Kubernetes Controller Manager está configurado de forma predeterminada en 5 minutos y se puede actualizar a través del plano de control de Kubernetes. Sin embargo, dado que Amazon EKS es un servicio de Kubernetes gestionado, no pod-eviction-timeout se puede modificar.

Como solución alternativa, puede utilizar los desalojos basados en la contaminación de los nodos. Cuando un nodo deja de funcionar o el kubelet deja de publicar su estado, el nodo queda contaminado con node.kubernetes.io/unreachable. De forma predeterminada, los pods toleran esta contaminación durante 5 minutos, pero puedes anularla con una tolerancia de contaminación estándar durante más o menos tiempo. Para definir una duración de tolerancia personalizada, adjunta un código que especifique el formulario node.kubernetes.io/unreachable y node.kubernetes.io/not-ready los valores tolerationSeconds de cada implementación. El código siguiente proporciona un ejemplo:

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