Configurar o horário de despejo do pod - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o horário de despejo do pod

O tempo de despejo do pod é útil ao projetar resiliência em um cenário de falha no plano de controle ou na zona de disponibilidade. Durante o teste de falha da zona de disponibilidade, em que as sub-redes perdem a conectividade de rede, todos os nós afetados do Amazon EKS perdem a conectividade com os planos de controle do Amazon EKS. Em 1 minuto, todos os nós afetados do Amazon EKS são marcados com o NotReady status e os endpoints do pod ou EndpointSlices foram removidos dos endpoints de serviço. No entanto, todos os pods em execução nos nós afetados permanecem no running status por 5 minutos padrão. Em seguida, os pods são marcados como TERMINATING e novos pods são programados.

O pod-eviction-timeout parâmetro dentro do Kubernetes Controller Manager é definido por padrão em 5 minutos e pode ser atualizado por meio do plano de controle do Kubernetes. No entanto, como o Amazon EKS é um serviço gerenciado do Kubernetes, não pod-eviction-timeout está disponível para ser modificado.

Como solução alternativa, você pode usar despejos baseados em contaminação de nós. Quando um nó fica inativo ou o kubelet para de publicar o status, o nó é contaminado com node.kubernetes.io/unreachable. Por padrão, os pods toleram essa contaminação por 5 minutos, mas você pode substituí-la por uma tolerância de contaminação padrão por mais ou menos tempo. Para definir uma duração de tolerância personalizada, anexe um código que especifique a forma node.kubernetes.io/unreachable e tolerationSeconds os node.kubernetes.io/not-ready valores de cada implantação. O código a seguir fornece um exemplo:

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