Tutorial - Atualizar um cluster do Serviço Kubernetes do Azure (AKS)

Como parte do ciclo de vida do aplicativo e do cluster, convém atualizar para a versão mais recente disponível do Kubernetes. Você pode atualizar seu cluster do Serviço Kubernetes do Azure (AKS) usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.

Neste tutorial, você atualiza um cluster AKS. Você aprende a:

  • Identifique as versões atuais e disponíveis do Kubernetes.
  • Atualize os seus nós do Kubernetes.
  • Valide uma atualização bem-sucedida.

Antes de começar

Em tutoriais anteriores, você empacotou um aplicativo em uma imagem de contêiner e carregou a imagem de contêiner no Registro de Contêiner do Azure (ACR). Você também criou um cluster AKS e implantou um aplicativo nele. Se você não concluiu essas etapas e quer acompanhar, comece com o Tutorial 1 - Preparar a inscrição para o AKS.

Se estiver usando a CLI do Azure, este tutorial exigirá a CLI do Azure versão 2.34.1 ou posterior. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, consulte Install CLI do Azure.

Se estiver usando o Azure PowerShell, este tutorial exigirá o Azure PowerShell versão 5.9.0 ou posterior. Executar Get-InstalledModule -Name Az para localizar a versão. Se você precisar instalar ou atualizar, consulte Instalar o Azure PowerShell.

Para atualizar um cluster AKS, precisa do papel Azure Kubernetes Service Contributor ou permissões equivalentes.

Antes de atualizares, revê as notas de lançamento do AKS para detectar alterações precárias e APIs obsoletas. Valide também os Pod Disruption Budgets (PDBs) da sua carga de trabalho, a quota de computação disponível e a capacidade IP de sub-redes para os nós de pico. Para mais informações, consulte Opções de atualização e recomendações para clusters AKS.

Obtenha versões disponíveis do cluster usando a CLI do Azure

Antes de atualizares, verifica quais as versões do Kubernetes disponíveis para o teu cluster usando o az aks get-upgrades comando.

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster

O seguinte exemplo mostra a versão atual de um cluster e lista as versões mais recentes em upgrades:

  {
    "agentPoolProfiles": null,
    "controlPlaneProfile": {
      "kubernetesVersion": "1.33.7",
      ...
      "upgrades": [
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.10"
        },
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.9"
        }
      ]
    },
    ...
  }

Obtenha versões disponíveis do cluster usando Azure PowerShell

  1. Antes de atualizares, verifica a versão atual do Kubernetes e a região do teu cluster usando o Get-AzAksCluster cmdlet.

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
      Select-Object -Property Name, CurrentKubernetesVersion, Location
    

    O seguinte exemplo mostra a versão atual e a localização do cluster:

    Name              CurrentKubernetesVersion      Location
    ----              ------------------------      --------
    myAKSCluster      1.33.7                        westus2
    
  2. Liste as versões do Kubernetes disponíveis na região onde o seu cluster reside usando o Get-AzAksVersion cmdlet.

    Get-AzAksVersion -Location westus2 | Where-Object OrchestratorVersion
    

    O exemplo seguinte mostra as versões regionais em OrchestratorVersion:

    Default     IsPreview     OrchestratorType     OrchestratorVersion
    -------     ---------     ----------------     -------------------
                              Kubernetes               1.34.10
                              Kubernetes               1.34.9
    True                      Kubernetes               1.33.7
    ...
    

    Para identificar potenciais alvos de atualização, compare versões mais recentes do que a versão atual do seu cluster com as regras de atualização de versões do Kubernetes. Este cmdlet lista a disponibilidade regional e não valida o caminho de atualização para um cluster específico.

Obtenha versões disponíveis do cluster usando o portal Azure

  1. Inicie sessão no portal Azure.

  2. Navegue até ao recurso do cluster do AKS.

  3. No menu de serviço, em Definições, selecione Upgrades.

  4. Na versão Kubernetes, selecione Atualizar versão.

    Captura de ecrã da opção de Atualização da versão no portal Azure.

  5. Na página Atualizar versão do Kubernetes, selecione o menu suspenso das Versões Kubernetes para ver as versões disponíveis para atualização.

    Captura de ecrã do ecrã Versão de atualização com as versões de atualização disponíveis.

Se não houver atualizações disponíveis, o teu cluster pode já estar na versão mais recente disponível ou a versão do cluster pode estar fora da janela de suporte. Se a versão não for suportada e o AKS não oferecer uma atualização de recuperação, crie um novo cluster com uma versão Kubernetes suportada e migre as suas cargas de trabalho. Para mais informações, consulte as políticas de suporte do AKS para versões do Kubernetes.

Processo de atualização do cluster AKS

Os nós AKS são cuidadosamente isolados e drenados para minimizar possíveis interrupções nos aplicativos em execução. Durante esse processo, o AKS executa as seguintes etapas:

  • Adiciona um novo nó de buffer (ou tantos nós quantos configurados em max surge) ao cluster que executa a versão especificada do Kubernetes.
  • Isola e drena um dos nós antigos para minimizar a interrupção dos aplicativos em execução. Se estiver a usar max surge, o sistema delimita e drena tantos nós ao mesmo tempo quanto o número de nós de buffer especificado.
  • Quando o nó antigo está completamente esvaziado, é reinstalado para receber a nova versão e torna-se o nó de buffer para o próximo nó a ser atualizado.
  • Esse processo se repete até que todos os nós no cluster tenham sido atualizados.
  • No final do processo, o último nó de buffer é excluído, mantendo a contagem de nós do agente existente e o equilíbrio de zona.

Nota

Se não for especificado nenhum patch, o cluster será atualizado automaticamente para o patch de disponibilidade geral mais recente da versão secundária especificada. Por exemplo, a configuração --kubernetes-version para 1.28 resulta na atualização do cluster para 1.28.9.

Para obter mais informações, consulte Atualizações de versão secundária do Kubernetes suportadas no AKS.

Pode atualizar manualmente o seu cluster ou configurar atualizações automáticas do cluster. Configure atualizações automáticas do cluster para ajudar a manter o seu cluster numa versão suportada do Kubernetes.

Atualizar manualmente o cluster usando a CLI do Azure

Atualiza o teu cluster usando o az aks upgrade comando. Este exemplo atualiza o cluster para a versão 1.34.10:

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version 1.34.10

Nota

Clusters não LTS suportados devem ser atualizados sequencialmente por versões menores. Por exemplo, para atualizar da 1.33.x para a 1.35.x, primeiro atualizar para a 1.34.x. Um cluster LTS pode saltar versões secundárias ao atualizar para uma versão LTS superior disponibilizada pelo AKS, se a atualização cumprir os requisitos de desfasamento de versões e as verificações de validação. Para mais informações, consulte as regras de atualização da versão Kubernetes.

O seguinte exemplo mostra o resultado da atualização. O kubernetesVersion valor agora corresponde à versão especificada no comando de exemplo:

{
  ...
  "agentPoolProfiles": [
    {
      ...
      "count": 3,
      "currentOrchestratorVersion": "1.34.10",
      "maxPods": 110,
      "name": "nodepool1",
      "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202608.26.0",
      "orchestratorVersion": "1.34.10",
      "osType": "Linux",
      "upgradeSettings": {
        "drainTimeoutInMinutes": null,
        "maxSurge": "10%",
        "nodeSoakDurationInMinutes": null,
        "undrainableNodeBehavior": null
      },
      "vmSize": "Standard_DS2_v2",
      ...
    }
  ],
  ...
  "currentKubernetesVersion": "1.34.10",
  "dnsPrefix": "myAKSClust-myResourceGroup-12ab34",
  "enableRbac": false,
  "fqdn": "myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io",
  "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
  "kubernetesVersion": "1.34.10",
  "location": "westus2",
  "name": "myAKSCluster",
  "type": "Microsoft.ContainerService/ManagedClusters"
  ...
}

Atualizar manualmente o cluster usando Azure PowerShell

Atualize o seu cluster utilizando o cmdlet Set-AzAksCluster. Este exemplo atualiza o cluster para a versão 1.34.10:

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -KubernetesVersion 1.34.10

Nota

Os clusters não LTS suportados têm de ser atualizados de forma sequencial, uma versão secundária de cada vez. Por exemplo, para atualizar da 1.33.x para a 1.35.x, primeiro atualizar para a 1.34.x. Um cluster LTS pode saltar versões secundárias ao migrar para uma versão LTS superior disponibilizada pelo AKS, se a atualização cumprir os requisitos de desfasamento de versões e as verificações de validação. Para mais informações, consulte as regras de atualização da versão Kubernetes.

O seguinte exemplo mostra o resultado da atualização. O KubernetesVersion valor corresponde agora à versão especificada no exemplo de cmdlet:

...
ProvisioningState        : Succeeded
MaxAgentPools            : 100
KubernetesVersion        : 1.34.10
CurrentKubernetesVersion : 1.34.10
...
ResourceGroupName        : myResourceGroup
Name                     : myAKSCluster
Type                     : Microsoft.ContainerService/ManagedClusters
Location                 : westus2
Tags                     :

Atualize manualmente o cluster usando o portal do Azure

  1. No portal do Azure, navegue até o recurso de cluster AKS.

  2. No menu de serviço, em Definições, selecione Upgrades.

  3. Na versão Kubernetes, selecione Atualizar versão.

    Captura de ecrã da opção de Atualização da versão no portal Azure.

  4. Na página Atualizar versão do Kubernetes, selecione o menu suspenso das Versões Kubernetes para ver as versões disponíveis para atualização.

    Captura de ecrã do ecrã Versão de atualização com as versões de atualização disponíveis.

  5. Seleciona a versão Kubernetes para a qual queres atualizar e depois seleciona Guardar.

A duração da atualização depende de fatores como o número de nós, as definições de capacidade adicional, as restrições de interrupção da carga de trabalho, o tempo limite de drenagem e o tempo de estabilização do nó. O tempo limite padrão de drenagem é de 30 minutos por nó e pode ser configurado de cinco minutos a 24 horas. A duração de imersão no nó pode adicionar de zero a 30 minutos por nó. Para mais informações, consulte Personalizar o aumento do pool de nós e as definições de indisponibilidade.

Configure atualizações automáticas do cluster usando a CLI do Azure

Configure atualizações automáticas do cluster usando Azure PowerShell

Configure atualizações automáticas do cluster usando o portal do Azure

Clusters automáticos do AKS usam o stable canal, e não precisas de configurar um canal. Para clusters AKS Standard, selecione um canal com base na sua política de versão. Os canais stable e rapid atualizam as versões secundárias do Kubernetes e ajudam a manter o cluster dentro do intervalo de versões suportadas. O patch canal só instala patches para a versão menor atual e não avança o cluster para uma versão menor mais recente.

Num cluster AKS Standard, defina o canal de autoatualização usando o az aks update comando. O exemplo seguinte utiliza o stable canal:

az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable

Num cluster AKS Standard, defina o canal de autoatualização usando o Set-AzAksCluster cmdlet. O exemplo seguinte utiliza o Stable canal:

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -AutoUpgradeChannel Stable
  1. No portal do Azure, navegue até o recurso de cluster AKS.

  2. No menu de serviço, em Definições, selecione Upgrades.

  3. Na versão Kubernetes, selecione Atualizar versão.

    Captura de ecrã da opção de Atualização da versão no portal Azure.

  4. Para um cluster AKS Standard, na página Atualizar a versão do Kubernetes, selecione a lista pendente Atualização automática, selecione Ativado com versão estável e, em seguida, selecione Guardar.

    Captura de ecrã da página da versão Upgrade Kubernetes a mostrar as opções automáticas do canal de atualização.

Para obter mais informações, consulte Atualizar automaticamente um cluster do Serviço Kubernetes do Azure (AKS).

Atualização das imagens dos nós

AKS fornece regularmente novas imagens para os nós. As imagens do nó Linux são atualizadas semanalmente e as imagens do nó do Windows são atualizadas mensalmente. Recomendamos atualizar/renovar as suas imagens de nó frequentemente para utilizar os recursos mais recentes do AKS e as atualizações de segurança. Para mais informações, consulte Atualizar as imagens dos nós no Serviço Kubernetes do Azure (AKS). Para configurar atualizações automáticas de imagem de nó, consulte Atualizar automaticamente as imagens do sistema operacional do nó de cluster do Serviço Kubernetes do Azure (AKS).

Ver eventos de atualização

Nota

Quando você atualiza seu cluster, os seguintes eventos do Kubernetes podem ocorrer nos nós:

  • Surge: crie um nó de surto.
  • Drenagem: Expulse as cápsulas do nó. O AKS permite 30 minutos para esvaziar um nó por predefinição. Pode configurar o tempo limite do dreno de cinco minutos para 24 horas.
  • Atualização: a atualização de um nó foi executada com sucesso ou falhou.
  • Excluir: Excluir um nó de sobrecarga.

Use o kubectl get comando com um seletor de campo para visualizar os eventos do AKS upgrader no namespace predefinido.

kubectl get events --field-selector source=upgrader

O seguinte exemplo mostra alguns dos eventos anteriores listados durante uma atualização:

LAST SEEN   TYPE      REASON    OBJECT                                   MESSAGE
...
5m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
5m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Deleting node aks-nodepool1-12345678-vmss000000 from API server
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully reimaged node: aks-nodepool1-12345678-vmss000000
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully upgraded node: aks-nodepool1-12345678-vmss000000
4m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
...

Valide uma atualização usando a CLI do Azure

Confirma que a atualização foi bem-sucedida usando o az aks show comando.

az aks show --resource-group myResourceGroup --name myAKSCluster --output table

O seguinte exemplo mostra que o cluster AKS executa a versão alvo Kubernetes:

Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
myAKSCluster  westus2      myResourceGroup  1.34.10              1.34.10                   Succeeded            myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io

Valide uma atualização usando Azure PowerShell

Confirma que a atualização foi bem-sucedida usando o Get-AzAksCluster cmdlet.

Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
  Select-Object -Property Name, Location, KubernetesVersion, ProvisioningState

O seguinte exemplo mostra que o cluster AKS executa a versão alvo Kubernetes:

Name             Location     KubernetesVersion     ProvisioningState
----             --------     -----------------     -----------------
myAKSCluster     westus2       1.34.10               Succeeded

Valide uma atualização usando o portal Azure

  1. No portal do Azure, navegue até o recurso de cluster AKS.
  2. Na página de Visão Geral , em Essenciais, verifique a versão Kubernetes para confirmar que a atualização foi bem-sucedida.

Elimine o cluster usando a CLI do Azure

Eliminar o cluster usando Azure PowerShell

Elimine o cluster usando o portal do Azure

Como este tutorial é a última parte da série, convém excluir seu cluster AKS para evitar incorrer em cobranças do Azure.

Remova o grupo de recursos, o serviço de contentor e todos os recursos relacionados usando o az group delete comando.

az group delete --name myResourceGroup --yes --no-wait

Remova o grupo de recursos, o serviço de contentores e todos os recursos relacionados usando o Remove-AzResourceGroup cmdlet.

Remove-AzResourceGroup -Name myResourceGroup
  1. No portal do Azure, navegue até o recurso de cluster AKS.
  2. Na página Descrição geral, selecione Eliminar.
  3. Na página Confirmação de eliminação do cluster, selecione Eliminar.

Nota

Quando você exclui o cluster, a entidade de serviço do Microsoft Entra usada pelo cluster AKS não é removida. Para obter instruções sobre como remover o principal de serviço, consulte Considerações e eliminação do principal de serviço AKS. Se você usou uma identidade gerenciada, a identidade é gerenciada pela plataforma e não exige que você provisione ou alterne nenhum segredo.

Próximos passos

Neste tutorial, você atualizou o Kubernetes em um cluster AKS. Você aprendeu a:

  • Identifique as versões atuais e disponíveis do Kubernetes.
  • Atualize os seus nós do Kubernetes.
  • Valide uma atualização bem-sucedida.

Para obter mais informações sobre o AKS, consulte a visão geral do AKS. Para obter orientação sobre como criar soluções completas com o AKS, consulte o Guia de solução do AKS.