Partilhar via


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, parte sete de sete, você atualiza um cluster AKS. Sabe como:

  • Identifique as versões atuais e disponíveis do Kubernetes.
  • Atualize 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, veja Install Azure CLI (Instalar o Azure CLI).

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 precisar de instalar ou atualizar, veja Install Azure PowerShell(Instalar o Azure PowerShell).

Obter versões de cluster disponíveis

  • Antes de atualizar, verifique quais versões do Kubernetes estão disponíveis para seu cluster usando o az aks get-upgrades comando.

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

    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:

      {
        "agentPoolProfiles": null,
        "controlPlaneProfile": {
          "kubernetesVersion": "1.28.9",
          ...
          "upgrades": [
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.4"
            },
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.2"
            }
          ]
        },
        ...
      }
    

Atualizar um cluster do 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 você estiver usando max surge, ele corda e drena tantos nós ao mesmo tempo quanto o número de nós de buffer especificado.
  • Quando o nó antigo é totalmente drenado, ele é recriado para receber a nova versão e se torna o nó de buffer para o nó seguinte 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, veja Atualizações de versão secundária do Kubernetes suportadas no AKS.

Você pode atualizar manualmente seu cluster ou configurar atualizações automáticas de cluster. Recomendamos que você configure atualizações automáticas de cluster para garantir que seu cluster esteja sempre executando a versão mais recente do Kubernetes.

Atualizar cluster manualmente

  • Atualize seu cluster usando o az aks upgrade comando.

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version KUBERNETES_VERSION
    
  • Você será solicitado a confirmar a operação de atualização e a confirmar que deseja atualizar o plano de controle e todos os pools de nós para a versão selecionada do Kubernetes:

     Are you sure you want to perform this operation? (y/N): y
    Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
    

    Nota

    Pode atualizar apenas uma versão secundária de cada vez. Por exemplo, você pode atualizar de 1.14.x para 1.15.x, mas não pode atualizar de 1.14.x para 1.16.x diretamente. Para atualizar de 1.14.x para 1.16.x, você deve primeiro atualizar de 1.14.x para 1.15.x e, em seguida, executar outra atualização de 1.15.x para 1.16.x.

    A saída de exemplo a seguir mostra o resultado da atualização para 1.29.2. Observe que agora kubernetesVersion mostra 1.29.2:

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

Configurar atualizações automáticas de cluster

  • Defina um canal de atualização automática no cluster usando o az aks update comando com o --auto-upgrade-channel parâmetro definido como patch.

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

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

Atualizar imagens de nó AKS

O AKS fornece regularmente novas imagens de nós. As imagens do nó Linux são atualizadas semanalmente e as imagens do nó do Windows são atualizadas mensalmente. Recomendamos atualizar suas imagens de nó com frequência para usar os recursos mais recentes do AKS e as atualizações de segurança. Para obter mais informações, consulte Atualizar imagens de nó 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 os 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ó. Cada cápsula tem um tempo limite de cinco minutos para completar a remoção.
  • Atualização: a atualização de um nó foi bem-sucedida ou falhou.
  • Excluir: exclua um nó de surto.
  • Exiba os eventos de atualização nos namespaces padrão usando o kubectl get events comando.

    kubectl get events --field-selector source=upgrader
    

    A saída de exemplo a seguir mostra alguns dos eventos acima listados durante uma atualização:

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

Validar uma atualização

  • Confirme se a atualização foi bem-sucedida usando o az aks show comando.

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

    A saída de exemplo a seguir mostra que o cluster AKS executa o KubernetesVersion 1.27.3:

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.29.2               1.29.2                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

Eliminar o cluster

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 contêiner e todos os recursos relacionados usando o az group delete comando.

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

Nota

Quando você exclui o cluster, a entidade de serviço do Microsoft Entra usada pelo cluster AKS não é removida. Para obter passos sobre como remover o principal de serviço, consulte Considerações sobre 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, atualizou o Kubernetes num cluster do AKS. Aprendeu a:

  • Identifique as versões atuais e disponíveis do Kubernetes.
  • Atualize 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.