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

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

Na parte sete de sete deste tutorial, você atualizará um cluster do AKS. Você aprenderá como:

  • Identifique as versões atuais e disponíveis do Kubernetes.
  • Atualize seus nós do Kubernetes.
  • Valide um upgrade bem-sucedido.

Antes de começar

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

Se estiver usando a CLI do Azure, este tutorial exigirá a versão 2.34.1 ou posterior da CLI do Azure. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

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

Obter versões de cluster disponíveis

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

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

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

    {
      "agentPoolProfiles": null,
      "controlPlaneProfile": {
        "kubernetesVersion": "1.26.6",
        ...
        "upgrades": [
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.1"
          },
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.3"
          }
        ]
      },
      ...
    }
    

Atualizar um cluster AKS

Os nós do AKS são cuidadosamente isolados e drenados para minimizar interrupções potenciais aos aplicativos em execução. Durante esse processo, o AKS executa as etapas a seguir:

  • Adiciona um novo nó de buffer (ou quantos nós forem configurados no aumento máximo) ao cluster que executa a versão especificada do Kubernetes.
  • Isola e esvazia um dos antigos nós para minimizar a interrupção dos aplicativos em execução. Se você estiver usando uma sobretensão máxima, ele isola e esvazia tantos nós ao mesmo tempo quanto o número de nós de buffer especificado.
  • Quando o nó antigo é totalmente esvaziado, sua imagem será refeita para receber a nova versão e ele se torna o nó de buffer para o nó seguinte a ser atualizado.
  • Esse processo se repete até que todos os nós do cluster tenham sido atualizados.
  • No final do processo, o último nó do buffer é excluído, mantendo a contagem de nós de agente e o equilíbrio da zona existente.

Observação

Se nenhum patch for especificado, o cluster será automaticamente atualizado para o patch de GA mais recente da versão secundária especificada. Por exemplo, definir --kubernetes-version como 1.21 resulta na atualização do cluster para 1.21.9.

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

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

Atualizar o cluster manualmente

  • Atualize seu cluster usando o comando az aks upgrade.

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

    Observação

    Você só pode atualizar uma versão secundária por vez. Por exemplo, você pode atualizar da 1.14.x para 1.15.x, mas não pode atualizar da 1.14.x para 1.16.x diretamente. Para atualizar a versão 1.14.x para a 1.16.x, primeiro, atualize a versão 1.14.x para a 1.15.x e, em seguida, faça outra atualização da versão 1.15.x para a 1.16.x.

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

    {
      "agentPoolProfiles": [
        {
          "count": 3,
          "maxPods": 110,
          "name": "nodepool1",
          "osType": "Linux",
          "vmSize": "Standard_DS1_v2",
        }
      ],
      "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.27.3",
      "location": "eastus",
      "name": "myAKSCluster",
      "type": "Microsoft.ContainerService/ManagedClusters"
    }
    

Configurar atualizações automáticas de cluster

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

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

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

Atualizar imagens de nó do AKS

O AKS fornece regularmente novas imagens de nó. As imagens dos nós do Linux são atualizadas semanalmente e as imagens dos nós do Windows são atualizadas mensalmente. É recomendável atualizar suas imagens de nó com frequência para usar os recursos e atualizações de segurança mais recentes do AKS. Para obter mais informações, confira Atualizar imagens de nó do AKS (Serviço de Kubernetes do Azure). Para configurar atualizações automáticas de imagem de nó, confira Atualizar automaticamente as imagens do sistema operacional do nó de cluster do AKS (Serviço de Kubernetes do Azure).

Exibir os eventos de atualização

Observação

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

  • Isolar: cria um nó de isolamento.
  • Esvaziar: remove os pods do nó. Cada pod tem um tempo limite de cinco minutos para concluir a remoção.
  • Atualização: a atualização de um nó foi bem-sucedida ou falhou.
  • Exclusão: exclui um nó de aumento.
  • Exibir os eventos de atualização nos namespaces padrão usando o comando kubectl get events.

    kubectl get events --field-selector source=upgrader
    

    O exemplo de saída de exemplo a seguir mostra alguns dos eventos listados acima durante um upgrade:

    ...
    default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001]
    ...
    default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool %!s(MISSING)
    ...
    

Validar uma atualização

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

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

    A seguinte saída de exemplo mostra que o cluster do AKS executa KubernetesVersion 1.27.3:

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

Excluir o cluster

Como este tutorial é a última parte da série, é aconselhável excluir seu cluster do AKS para evitar a geração encargos do Azure.

  • Remova o grupo de recursos, o serviço de contêiner e todos os recursos relacionados usando o comando az group delete.

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

Observação

Quando você excluir o cluster, a entidade de serviço do Microsoft Entra usada pelo cluster do AKS não será removida. Para obter as etapas para remover a entidade de serviço, confira Considerações sobre a entidade de serviço do AKS e sua exclusão. Se você usou uma identidade gerenciada, ela será gerenciada pela plataforma e não exigirá que você provisione ou gire nenhum segredo.

Próximas etapas

Neste tutorial, você fez upgrade do Kubernetes em um cluster do AKS. Você aprendeu a:

  • Identifique as versões atuais e disponíveis do Kubernetes.
  • Atualize seus nós do Kubernetes.
  • Valide um upgrade bem-sucedido.

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, confira as Diretrizes de solução do AKS.