Atualizar o plano de controlo do cluster do Azure Kubernetes Service (AKS)

Os clusters Azure Kubernetes Service (AKS) consistem em dois componentes principais: o plano de controlo gerido pelo Azure e os pools de nós onde as suas cargas de trabalho são executadas. Este artigo foca-se na atualização independente do plano de controlo, o que permite adotar novas versões do Kubernetes para funcionalidades do servidor API, gerindo separadamente as atualizações do pool de nós.

Antes de começar

  • Se você estiver usando a CLI do Azure, este artigo exigirá a CLI do Azure versão 2.34.1 ou posterior. Use o az --version comando para localizar a versão. Se precisar de instalar ou atualizar, consulte Install CLI do Azure.
  • Se você estiver usando o Azure PowerShell, este artigo requer o Azure PowerShell versão 5.9.0 ou posterior. Usa o Get-InstalledModule -Name Az cmdlet para encontrar a versão. Se você precisar instalar ou atualizar, consulte Instalar o Azure PowerShell.
  • Para realizar operações de atualização, precisa do Azure Kubernetes Service Contributor Role ou permissões equivalentes.
  • As APIs beta são desativadas por defeito quando atualizas para as versões 1.30 e 1.27 LTS do Kubernetes.

Advertência

Certifique-se de que tem uma quota de computação suficiente antes de atualizar. Se a quota for baixa, a atualização pode falhar. Para obter mais informações, consulte Aumentar cotas.

Visão geral dos tipos de atualização do AKS

A tabela seguinte apresenta três tipos de atualizações do AKS, destacando o seu âmbito e casos de uso:

Tipo de atualização Scope Caso de uso
Apenas plano de controle Servidor API, etcd, gestor de controladores, agendador Teste novas APIs Kubernetes antes de atualizar cargas de trabalho
Aglomerado completo Plano de controlo e todos os grupos de nós Atualização padrão para manter o cluster atualizado
Apenas conjunto de nós Pools de nós específicos Desdobramento escalonado após a atualização do plano de controle

Sugestão

Atualizar primeiro o plano de controlo permite validar a compatibilidade da API do Kubernetes antes de afetar as cargas de trabalho em execução. Para estratégias de atualização do pool de nós, veja Configurar atualizações progressivas.

Regras de atualização da versão Kubernetes

Quando atualizas um cluster AKS suportado que não seja LTS, não podes saltar versões menores do Kubernetes. Você deve executar todas as atualizações sequencialmente por número de versão menor. Por exemplo, atualizações entre 1.28.x ->1.29.x ou 1.29.x ->1.30.x são permitidas. 1.28.x ->1.30.x não é permitido.

Um cluster LTS pode saltar versões menores ao passar para uma versão LTS superior oferecida pelo AKS, desde que a atualização satisfaça os requisitos de desajustamento de versão e verificações de validação. Para mais informações, veja Posso saltar várias versões do AKS durante uma atualização do cluster?.

A partir do Kubernetes 1.28, o plano de controlo pode estar até três versões menores à frente dos pools de nós. Por exemplo, se o teu plano de controlo estiver em 1.35.x, os teus pools de nós podem estar em 1.32.x, 1.33.x, 1.34.x ou 1.35.x. Para as restrições atuais, veja a política de envioiamento da versão AKS.

Verifique as atualizações disponíveis para o AKS

Sugestão

Para se manter atualizado com as últimas versões e atualizações do AKS, consulte o rastreador de lançamentos do AKS.

Verifique as versões disponíveis do Kubernetes para o seu cluster AKS usando o az aks get-upgrades comando.

az aks get-upgrades --resource-group <resource-group-name> --name <cluster-name> --output table

O exemplo de saída a seguir mostra a versão atual como 1.28.9 e lista as versões disponíveis em upgrades:

Name     ResourceGroup          MasterVersion    Upgrades
-------  ---------------        ---------------  --------------
default  <resource-group-name>  1.28.9           1.29.2, 1.29.4

Atualize apenas o plano de controlo do AKS

Importante

Não pode fazer uma atualização apenas no plano de controlo quando o autoupgrade do cluster está ativado. O upgrade automático do cluster atualiza sempre o plano de controlo e todos os pools de nós juntos.

  1. Atualiza o plano de controlo usando o comando az aks upgrade com a flag --control-plane-only. O exemplo seguinte atualiza o plano de controlo para a versão 1.29.4 do Kubernetes:

    az aks upgrade \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --kubernetes-version 1.29.4 \
        --control-plane-only
    
  2. Confirme que a atualização do plano de controlo foi bem-sucedida usando o az aks show comando.

    az aks show --resource-group <resource-group-name> --name <cluster-name> --output table
    

    A seguinte saída de exemplo mostra que o plano de controlo agora corre a 1.29.4:

    Name            Location    ResourceGroup          KubernetesVersion    ProvisioningState    Fqdn
    ------------    ----------  ---------------        -------------------  -------------------  ------------------------------------------------
    <cluster-name>  eastus      <resource-group-name>  1.29.4               Succeeded            <cluster-name>-dns-123abcd4.hcp.eastus.azmk8s.io
    
  3. Verifique se as versões do pool de nós permanecem inalteradas usando o az aks nodepool list comando.

    az aks nodepool list --resource-group <resource-group-name> --cluster-name <cluster-name> --query "[].{Name:name,Version:orchestratorVersion}" --output table
    

    Na saída, os pools de nós devem continuar a mostrar a versão anterior do Kubernetes.

Atualizar o cluster completo do AKS

Observação

Durante uma atualização completa do cluster, o AKS atualiza primeiro o plano de controlo e depois atualiza cada pool de nós sequencialmente. Para mais controlo sobre as atualizações do pool de nós, consulte Configurar atualizações progressivas.

Atualiza o cluster completo (plano de controlo e todos os pools de nós) usando o az aks upgrade comando. O exemplo seguinte atualiza o cluster para a versão Kubernetes 1.29.4:

az aks upgrade \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --kubernetes-version 1.29.4

Perguntas frequentes sobre atualização do plano de controlo do AKS (FAQ)

Uma atualização só com plano de controlo também melhora os pools de nós?

Não. Uma atualização só para plano de controlo não altera os pools de nós. A atualização automática do cluster funciona de forma diferente: não suporta upgrades apenas do plano de controlo e melhora o plano de controlo e todos os pools de nós em conjunto.

Posso atualizar os agrupamentos de nós antes do plano de controlo?

Não. A versão do plano de controlo deve ser sempre igual ou maior do que qualquer versão do pool de nós. Tens de atualizar primeiro o plano de controlo.

Quanto tempo demora uma atualização de plano de controlo?

A duração da atualização varia consoante o estado do cluster e as condições do Azure. Monitorize provisioningState usando az aks show ou Get-AzAksCluster. A atualização está completa quando o estado de provisionamento é Succeeded.

Resolver problemas de atualização do plano de controlo

Não há upgrades disponíveis

Para um cluster não suportado, use az aks get-upgrades para verificar se o AKS oferece um alvo suportado elegível. Se houver um alvo disponível, realizar uma atualização completa do cluster. Atualizações apenas com plano de controlo não são suportadas para este caminho de recuperação.

Se não houver alvo disponível, o teu cluster pode já estar na versão mais recente suportada. Se o cluster estiver a correr uma versão não suportada, crie um novo cluster com uma versão suportada e migre as suas cargas de trabalho.

A atualização falhou devido a APIs obsoletas

Antes de atualizar, verifique se há APIs obsoletas usando ferramentas como o kube-no-trouble (kubent):

kubent

O comando analisa recursos acessíveis através do contexto atual do kubeconfig para versões obsoletas da API Kubernetes. A saída agrupa as conclusões pela versão Kubernetes e identifica cada recurso afetado por KIND, NAMESPACE, NAME, e API_VERSION. Atualize o manifesto de origem de cada recurso listado para usar uma versão da API suportada antes de atualizar.