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.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 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.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 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
Você será solicitado a confirmar a operação de upgrade e confirmar se quer fazer o upgrade do plano de controle e de todos os pools de nós para a versão do Kubernetes selecionada:
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
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.
O exemplo de saída a seguir mostra o resultado do upgrade para 1.29.2. Observe que
kubernetesVersion
agora 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 em seu cluster usando o comando
az aks update
com o parâmetro--auto-upgrade-channel
definido comopatch
.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:
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 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.29.2 1.29.2 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.
Azure Kubernetes Service