Arquitetura /

Arquitetura Zero-Downtime: EKS, Karpenter e Resiliência contra Falhas Zonais

Aprenda a orquestrar o Karpenter com o AWS ARC Zonal Shift para evacuar clusters EKS antes de outages em Availability Zones inteiras.

Arquitetura Zero-Downtime: EKS, Karpenter e Resiliência contra Falhas Zonais

Garantir alta disponibilidade em clusters Kubernetes de missão crítica exige resiliência física. Embora a AWS ofereça arquiteturas Multi-AZ com excelente estabilidade, falhas severas localizadas em uma única Zona de Disponibilidade (Availability Zone) ainda podem afetar o desempenho de aplicações distribuídas.

A combinação do orquestrador de nós de alto desempenho Karpenter com o AWS Route 53 Application Recovery Controller (ARC) Zonal Shift permite que equipes de engenharia retirem cargas de trabalho de zonas em degradação de forma automatizada e em minutos.

Como Funciona o Zonal Shift no EKS

O ARC Zonal Shift permite que você indique à AWS a intenção de desviar o tráfego de uma AZ específica. Ao fazer isso, o Karpenter responde destruindo nós localizados nessa zona e provisionando novas instâncias nas zonas saudáveis remanescentes.

graph TD
    subgraph Cluster EKS
        AZ-A[AZ us-east-1a: Saudável] --> Node1[Karpenter Node]
        AZ-B[AZ us-east-1b: Instável] -.->|Zonal Shift Acionado| Terminate[Esvaziar Nós]
        AZ-C[AZ us-east-1c: Saudável] --> Node2[Karpenter Node]
    end
    Terminate -->|Karpenter Reprovisiona| AZ-A
    Terminate -->|Karpenter Reprovisiona| AZ-C

Configuração do Karpenter NodePool para Multi-AZ

Para garantir que o Karpenter possa readequar a infraestrutura de nós sem restrições, configure o NodePool limitando a zona instável durante um evento de failover. Veja uma configuração modelo do Karpenter:

apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: default
spec:
  template:
    spec:
      requirements:
        - key: kubernetes.io/arch
          operator: In
          values: ["amd64"]
        - key: karpenter.sh/capacity-type
          operator: In
          values: ["on-demand"]
        - key: topology.kubernetes.io/zone
          operator: In
          values: ["us-east-1a", "us-east-1c"] # us-east-1b evacuada temporariamente

O Fluxo de Evacuação via AWS CLI

Durante um evento de instabilidade de rede ou energia em uma AZ, a evacuação pode ser iniciada de maneira manual (via console/CLI) ou automatizada (através de alarmes de monitoramento sintético do CloudWatch).

# Inicia um desvio de tráfego de 3 horas para um recurso de load balancer
aws arc-zonal-shift start-zonal-shift \
    --away-from "us-east-1b" \
    --expires-in "3h" \
    --resource-identifier "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/12345" \
    --comment "Evacuação preventiva de AZ devido a flutuações de rede"

O uso de Karpenter e Zonal Shift reduz drasticamente o tempo de recuperação (RTO), passando de horas (onde aplicações aguardavam timeouts de rede) para minutos, onde a infraestrutura é dinamicamente reconstruída fora do raio de impacto da falha.


Saiba Mais