Opções de atualização e recomendações para clusters do AKS (Serviço de Kubernetes do Azure)

Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard

Para a maioria das cargas de trabalho de produção, o AKS Automatic é a experiência de cluster padrão recomendada. Ele fornece configurações padrão prontas para produção nas operações de ciclo de vida de clusters e nós, incluindo comportamento de atualização gerenciada, mecanismos de proteção integrados e redução da sobrecarga operacional.

O AKS Standard permanece disponível para cenários em que você precisa de um controle manual mais profundo sobre a mecânica de atualização, as opções de rede ou o comportamento do pool de nós.

Este artigo fornece uma base técnica para atualizações do AKS abrangendo opções de atualização, cenários comuns e recomendações para o AKS Automatic e o AKS Standard.

O que este artigo aborda

Esta referência técnica aborda:

  • Por que o AKS Automatic é o padrão recomendado e pronto para produção para a maioria das cargas de trabalho.
  • Como o comportamento de atualização difere entre o AKS Automatic e o AKS Standard.
  • Caminhos de atualização manuais versus automatizados e quando usar cada um.
  • Cenários comuns de atualização com recomendações específicas.
  • Técnicas de otimização para desempenho e interrupções mínimas.
  • Processos de validação e verificações antes da atualização.

Para obter diretrizes relacionadas:

Navegação rápida

Sua situação Caminho recomendado
Carga de trabalho de produção nova ou existente sem requisitos especiais de personalização Criar um cluster automático do AKS
Cluster de produção com controles de atualização personalizados estritos Estratégias de atualização de produção
Cargas de trabalho do banco de dados ou com estado Padrões de cargas de trabalho com estado
Atualização do AKS Standard pela primeira vez Atualização básica do cluster do AKS
Vários ambientes ou operações de frota Hub de cenários de atualização
Conjuntos de nós ou nós do Windows no AKS Standard Atualizações de pools de nós
Apenas pool de nós específico Atualização de um único pool de nós

Atualizar modelos operacionais

O AKS Automatic foi projetado para operar em produção por padrão. Para atualizações, o AKS Automatic fornece:

  • Conjuntos de nós gerenciados do sistema.
  • Comportamento automático de atualização de cluster com padrões gerenciados pela plataforma.
  • Comportamento da atualização de imagem do sistema operacional do nó com cadência concentrada na segurança.
  • Verificações integradas para APIs do Kubernetes descontinuadas.
  • Suporte de agendamento de manutenção planejado.

Use o AKS Automatic quando quiser minimizar a orquestração de atualização manual e manter os clusters de produção alinhados a versões com suporte com menos esforço.

AKS Standard (modelo de controle avançado)

O AKS Standard dá a você controle direto sobre sequenciamento e ajuste da atualização. Você escolhe e gerencia:

  • Configuração de atualização manual ou automática.
  • Atualize a seleção do canal.
  • Pool de nós e comportamento de pico.
  • Procedimentos operacionais em torno de janelas de manutenção e orçamentos de interrupção da carga de trabalho.

Use o AKS Standard quando seu ambiente exigir personalização que vá além dos padrões automáticos do AKS.

Opções de atualização

Executar atualizações manuais

Aplica-se principalmente ao AKS Standard ou a fluxos de trabalho operacionais especializados.

As atualizações manuais permitem controlar quando o cluster é atualizado para uma nova versão do Kubernetes. Essas atualizações são úteis para testes, distribuições em etapas e adoção de versão direcionada.

Configurar atualizações automáticas

Para o AKS Standard, as atualizações automáticas ajudam a manter os clusters em versões com suporte, preservando o controle sobre a política e o agendamento. No AKS Automatic, a automação de atualização e os guardrails já fazem parte do modelo operacional padrão.

Considerações especiais para pools de nós que abrangem várias zonas de disponibilidade

O AKS usa o balanceamento de zonas de melhor esforço em pools de nós. Durante um pico de atualização, as zonas dos nós surge em conjuntos de dimensionamento de máquinas virtuais são desconhecidas com antecedência, o que pode causar temporariamente uma configuração de zona desbalanceada. O AKS exclui nós de aumento após a atualização e restaura o balanceamento de zona original.

Para manter as zonas balanceadas, defina o aumento para um múltiplo de três nós. As solicitações de volume persistente que usam discos de armazenamento com redundância local do Azure são limitadas à zona e podem causar tempo de inatividade se os nós surge estiverem em uma zona diferente. Use um orçamento de interrupção de pod (PDB) para manter alta disponibilidade durante esvaziamentos.

Otimizar atualizações para melhorar o desempenho e minimizar interrupções

Combine janela de manutenção planejada, surge máximo, PDB, tempo limite de esvaziamento de nó e tempo de espera do nó para aumentar a probabilidade de atualizações bem-sucedidas e com pouca interrupção.

AKS Automático

No AKS Automatic, o comportamento de atualização no nível da plataforma é pré-configurado. Concentre seu ajuste na resiliência da carga de trabalho e na preparação da capacidade:

  • Valide orçamentos de interrupção de pod e contagens de réplicas.
  • Garanta a capacidade da cota e da sub-rede para o crescimento esperado.
  • Defina agendamentos de manutenção planejados alinhados a períodos de baixo tráfego.
  • Monitore os eventos de atualização e a preparação crítica da carga de trabalho.

AKS Standard

No AKS Standard, ajuste os controles de atualização diretamente:

Configurações de atualização Como nós extras são usados Comportamento esperado
maxSurge=5, maxUnavailable=0 5 nós de aumento Cinco nós foram criado temporariamente para atualização.
maxSurge=5, maxUnavailable=0 0-4 nós em surto A atualização falha devido à insuficiência de nós surge.
maxSurge=0, maxUnavailable=5 N/A Cinco nós existentes são esvaziados para atualização.

Observação

Antes de atualizar, verifique se há alterações interruptivas na API e confira as notas de versão do AKS para evitar interrupções.

Validações usadas no processo de atualização

O AKS executa validações de pré-atualização para garantir a integridade do cluster:

  • Alterações significativas na API: detecta APIs preteridas.
  • Versão de atualização do Kubernetes: garante um caminho de atualização válido.
  • Configuração do PDB: verifica PDBs mal configurados (por exemplo, maxUnavailable=0).
  • Cota: confirma se há cota suficiente para nós em surto.
  • Sub-rede: verifica se há endereços IP suficientes.
  • Certificados/entidades de serviço: detecta credenciais expiradas.
  • Verificação de bloqueio de recurso gerenciado: Verifica se há bloqueios de recursos aplicados ao grupo de recursos do cluster gerenciado.

Essas verificações se aplicam ao AKS. No AKS Automatic, eles são integrados ao caminho de atualização gerenciado; no AKS Standard, eles fazem parte do fluxo de trabalho operacional.

Cenários e recomendações comuns de atualização

Cenário 1: Restrições de capacidade

Se o cluster for limitado por camada de produto ou capacidade regional, as atualizações poderão falhar quando nós surge não puderem ser provisionados. Essa situação é comum em camadas de produto especializadas (como nós de GPU) ou em regiões com recursos limitados. Erros como SKUNotAvailable, AllocationFailedou OverconstrainedAllocationRequest podem ocorrer se maxSurge estiverem definidos muito alto para a capacidade disponível.

Orientação automática do AKS

  • Mantenha as janelas de manutenção planejadas implantadas.
  • Valide a cota da assinatura e a capacidade disponível da sub-rede antes dos períodos previstos de atualização.
  • Mantenha o escalonamento da carga de trabalho e os orçamentos de interrupção alinhados às janelas de manutenção.

Diretrizes padrão do AKS

Cenário 2: falhas de esvaziamento de nós e PDBs

As atualizações exigem esvaziamento de nós (remoção de pods). As drenagens podem falhar quando os pods demoram a encerrar ou quando Orçamentos de interrupção de pods (PDBs) rígidos bloqueiam as remoções de pods.

Erro de exemplo:

Code: UpgradeFailed
Message: Drain node ... failed when evicting pod ... Cannot evict pod as it would violate the pod's disruption budget.

Orientação automática do AKS

  • Trate o PDB e a estratégia de réplica como os principais controles de confiabilidade.
  • Valide orçamentos de interrupção no preparo antes da distribuição da produção.
  • Mantenha as cargas de trabalho críticas configuradas para que a remoção gradual seja bem-sucedida.

Diretrizes padrão do AKS

Opção 1: forçar a atualização, ignorar restrições do PDB

Aviso

A atualização forçada ignora as restrições de PDB (orçamento de interrupção de pod) e pode causar a interrupção do serviço, esvaziando todos os pods simultaneamente. Antes de usar essa opção, primeiro tente corrigir configurações incorretas do PDB (examine as configurações PDB minAvailable/maxUnavailable, verifique se há réplicas de pod adequadas e se os PDBs não estão bloqueando todas as evacuações).

Só use a atualização forçada quando PDBs impedirem atualizações críticas e não possam ser resolvidas. Essa ação substitui as proteções do PDB e pode potencialmente causar indisponibilidade completa do serviço durante a atualização.

Requisitos: CLI do Azure 2.79.0+ ou a API do AKS versão 2025-09-01+

az aks upgrade \
  --name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP_NAME \
  --kubernetes-version $KUBERNETES_VERSION \
  --enable-force-upgrade \
  --upgrade-override-until yyyy-mm-ddT13:00:00Z

Observação

  • O upgrade-override-until parâmetro define quando o bypass de validação termina (deve ser uma data/hora futura)
  • Se não for especificado, a janela será padronizada para três dias a partir da hora atual
  • O Z indica o fuso horário UTC/GMT

Aviso

Quando a atualização forçada está habilitada, ela tem precedência sobre todas as outras configurações de esgotamento de recursos. As configurações de comportamento do nó não esvaziável (Opção 2) não são aplicadas quando a atualização forçada está ativa.

Opção 2: Resolver nós não esvaziáveis respeitando PDBs

Use essa abordagem conservadora para respeitar os PDBs e evitar falhas de atualização.

Configurar comportamento de nós não esvaziáveis:

az aks nodepool update \
  --resource-group <resource-group-name> \
  --cluster-name <cluster-name> \
  --name <node-pool-name> \
  --undrainable-node-behavior Cordon \
  --max-blocked-nodes 2 \
  --drain-timeout 30

Opções de comportamento:

  • Agendar (padrão): exclui o nó bloqueado e cria temporariamente um nó substituto.
  • Isolamento (recomendado): isola o nó e o rotula como kubernetes.azure.com/upgrade-status=Quarantined.

Máximo de nós bloqueados (versão prévia):

  • Especifica quantos nós que falham ao esvaziar serão tolerados
  • Requer undrainable-node-behavior que seja definido
  • Assume como padrão o valor de maxSurge (normalmente 10%) se não for especificado
  • Assim como o aumento máximo, se o valor calculado for maior do que o número de nós restantes a serem atualizados na operação atual, o número de nós restantes a serem atualizados será usado em vez disso
Pré-requisitos para o máximo de nós bloqueados

A extensão da CLI aks-preview do Azure versão 18.0.0b9 ou posterior é necessária para usar o recurso máximo de nós bloqueados.

# Install or update the aks-preview extension
az extension add --name aks-preview
az extension update --name aks-preview
Configuração de exemplo com nós bloqueados máximos
az aks nodepool update \
  --cluster-name jizenMC1 \
  --name nodepool1 \
  --resource-group jizenTestMaxBlockedNodesRG \
  --max-surge 1 \
  --undrainable-node-behavior Cordon \
  --max-blocked-nodes 2 \
  --drain-timeout 5
Opção 3: gerenciamento automático do PDB (versão prévia)

Use a extensão de gerenciamento automático do PDB para resolver proativamente os drenos bloqueados pelo PDB sem ignorar as proteções do PDB ou exigir a limpeza manual de nós em quarentena. O gerenciamento do PDB automático detecta quando um PDB bloqueia a remoção em um nó isolado e aumenta temporariamente as réplicas da implantação para atender ao orçamento de interrupção. Ao concluir a drenagem, ele redimensiona réplicas para a contagem original.

O gerenciamento automático de PDBs também pode criar PDBs automaticamente para implantações sem um PDB, garantindo a proteção de suas cargas de trabalho durante drenagens de atualização. Para obter detalhes sobre instalação e configuração, consulte Gerenciar Pod Disruption Budgets automaticamente durante as atualizações do AKS.

Recomendações para evitar falhas de drenagem
  • Defina maxUnavailable nos PDBs para permitir pelo menos uma remoção de pod
  • Aumente as réplicas de pod para atender aos requisitos de orçamento de interrupção
  • Estenda o tempo limite de esvaziamento se as cargas de trabalho precisarem de mais tempo. (O padrão é 30 minutos.)
  • Use o gerenciamento automático do PDB para automatizar a criação do PDB e o dimensionamento de réplicas durante operações de drenagem.
  • Teste PDBs no preparo, monitore eventos de atualização e use implantações blue-green para cargas de trabalho críticas. Para mais informações, confira Implantação azul-verde de clusters do AKS.
Verificar nós não drenáveis
  • Os nós bloqueados não são agendados para pods e marcados com o rótulo "kubernetes.azure.com/upgrade-status: Quarantined".

  • Verifique o rótulo de quaisquer nós bloqueados quando houver falha de esvaziamento de nós na atualização:

    kubectl get nodes --show-labels=true
    
Resolver nós não drenáveis
  1. Remova o PDB responsável:

    kubectl delete pdb <pdb-name>
    
  2. Remova o kubernetes.azure.com/upgrade-status: Quarantined rótulo:

    kubectl label nodes <node-name> kubernetes.azure.com/upgrade-status-
    
  3. Opcionalmente, exclua o nó bloqueado:

    az aks nodepool delete-machines --cluster-name <cluster-name> --machine-names <machine-name> --name <node-pool-name> --resource-group <resource-group-name>
    
  4. Depois de concluir esta etapa, você pode reconciliar o status do cluster executando qualquer operação de atualização sem os campos opcionais, conforme descrito em az aks. Como alternativa, você pode dimensionar o pool de nós para o mesmo número de nós que a contagem de nós atualizados. Esta ação garante que o pool de nós atinja seu tamanho original pretendido. O AKS prioriza a remoção dos nós bloqueados. Esse comando também restaura o status de provisionamento de cluster para Succeeded. No exemplo a seguir, 2 é o número total de nós atualizados.

    # Update the cluster to restore the provisioning status
    az aks update --resource-group <resource-group-name> --name <cluster-name>
    
    # Scale the node pool to restore the original size
    az aks nodepool scale --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --node-count 2
    

Cenário 3: atualizações lentas

Configurações conservadoras ou problemas no nível do nó podem atrasar as atualizações, o que afeta sua capacidade de manter-se atualizado com patches e melhorias.

As causas comuns de atualizações lentas incluem:

  • Valores baixos maxSurge ou maxUnavailable limitam o paralelismo.
  • Altos períodos de imersão (longas esperas entre atualizações de nós).
  • Falhas de drenagem (confira Falhas de drenagem de nós).

Orientação automática do AKS

  • Mantenha os agendamentos de manutenção atualizados.
  • Monitore o status do evento de atualização e o preparo da carga de trabalho.
  • Resolva o bloqueio de PDB ou problemas de capacidade rapidamente para evitar atraso prolongado.

Diretrizes padrão do AKS

  • Use maxSurge=33%, maxUnavailable=1 para produção.
  • Use maxSurge=50%, maxUnavailable=2 para desenvolvimento/teste.
  • Use o Patch de Segurança do SO para uma aplicação de patch rápida e direcionada (evita a reimplantação com nova imagem completa do nó).
  • Habilite --undrainable-node-behavior para evitar bloqueadores de atualização.

Cenário 4: esgotamento de IP

Nós surge exigem mais IPs. Se a sub-rede estiver próxima da capacidade, o provisionamento de nós poderá falhar (por exemplo, Error: SubnetIsFull). Este cenário é comum com a Interface de Rede de Contêiner do Azure, alta maxPods ou grande número de nós.

Orientação automática do AKS

  • Valide os planos de sub-rede e capacidade antes da expansão da produção.
  • Monitore a utilização da rede como parte das operações de rotina.

Diretrizes padrão do AKS

  • Verifique se a sub-rede tem IPs suficientes para todos os nós, nós surge e pods. A fórmula é Total IPs = (Number of nodes + maxSurge) * (1 + maxPods).

  • Recupere IPs não utilizados ou expanda a sub-rede (por exemplo, de /24 para /22).

  • Reduza maxSurge se a expansão da sub-rede não for possível.

    az aks nodepool update \
      --resource-group <resource-group-name> \
      --cluster-name <cluster-name> \
      --name <node-pool-name> \
      --max-surge 10%
    
  • Monitore o uso de IP com o Azure Monitor ou alertas personalizados.

  • Reduza maxPods por nó, limpe IPs de balanceador de carga órfãos e planeje o dimensionamento da sub-rede para clusters de alta escala.

Perguntas frequentes

Devo usar o AKS Automatic ou o AKS Standard para atualizações de produção?

Para a maioria das cargas de trabalho de produção, use o AKS Automatic. Foi projetado como padrão pronto para produção, com comportamento de atualização gerenciado e proteções integradas.

Use o AKS Standard quando precisar de controle manual avançado sobre o sequenciamento de atualizações, as opções de infraestrutura ou as operações de pools de nós.

Posso usar ferramentas de código aberto para validação?

Sim. Muitas ferramentas de código aberto se integram bem aos processos de atualização do AKS:

  • Trivy: verificação de segurança para imagens de contêiner e configurações do Kubernetes.
  • Sonobuoy: teste de conformidade do Kubernetes e validação de cluster.
  • kube-bench: verificações de parâmetros de segurança em relação aos padrões do Center for Internet Security.
  • Polaris: validação das práticas recomendadas do Kubernetes.
  • kubectl-neat: limpar manifestos do Kubernetes para validação.

Como fazer para validar a compatibilidade da API antes da atualização?

Execute verificações de substituição usando ferramentas como kubent:

# Install and run API deprecation scanner
kubectl apply -f https://github.com/doitintl/kube-no-trouble/releases/latest/download/knt-full.yaml

# Check for deprecated APIs in your cluster
kubectl run knt --image=doitintl/knt:latest --rm -it --restart=Never -- \
  -c /kubeconfig -o json > api-deprecation-report.json

# Review findings
cat api-deprecation-report.json | jq '.[] | select(.deprecated==true)'

O que torna as atualizações do AKS diferentes de outras plataformas do Kubernetes?

O AKS oferece várias vantagens exclusivas:

  • Caminhos operacionais gerenciados no AKS Automatic para menor sobrecarga de atualização.
  • Integração nativa com o Gerenciador de Tráfego do Microsoft Azure, Azure Load Balancer e sistema de rede.
  • Gerenciador de Frota de Kubernetes do Azure para atualizações multicluster coordenadas.
  • Aplicação automática de patches de imagem de nó sem gerenciamento manual de nós.
  • Validação interna de cotas, sistema de rede e credenciais.
  • Suporte do Azure para problemas relacionados à atualização.

Escolha o caminho de atualização

Este artigo forneceu uma base técnica. Agora, selecione o caminho com base no cenário.

Pronto para executar?

Se você tiver... Então vá para...
Carga de trabalho de produção e nenhuma restrição de personalização especial Criar um cluster automático do AKS
Ambiente de produção com necessidades avançadas de atualização personalizada Estratégias de atualização de produção
Bancos de dados ou aplicativos com estado Padrões de cargas de trabalho com estado
Vários ambientes Hub de cenários de atualização
Cluster básico do AKS Standard Atualizar um cluster do AKS

Ainda decidindo?

Use o hub de cenários de atualização para uma árvore de decisão orientada que considera seu:

  • Tolerância ao tempo de inatividade
  • Complexidade do ambiente
  • Perfil de risco
  • Restrições de linha do tempo

Recomendações finais

  • Use AKS Automatic para a maioria das cargas de trabalho de produção.
  • Consulte as diretrizes sobre patch e atualização do AKS para obter práticas recomendadas e dicas de planejamento antes de iniciar qualquer atualização.
  • Sempre verifique se há alterações de API que podem causar interrupções e valide a compatibilidade da carga de trabalho com a versão do Kubernetes de destino.
  • Teste as configurações de atualização (como maxSurge, maxUnavailable, e PDBs) em um ambiente de teste para minimizar o risco de produção.
  • Monitore os eventos de atualização e a integridade do cluster durante todo o processo.