Atualizar imagens de nós do AKS (Serviço de Kubernetes do Azure)

O Serviço de Kubernetes do Azure (AKS) fornece regularmente novas imagens de nó, por isso é benéfico atualizar suas imagens de nó com frequência para usar os recursos mais recentes do AKS. As imagens dos nós do Linux são atualizadas semanalmente e as imagens dos nós do Windows são atualizadas mensalmente. Os anúncios de atualização de imagens estão incluídos nas Notas sobre a versão do AKS e pode levar até uma semana para que essas atualizações sejam distribuídas em todas as regiões. As atualizações de imagens de nós também podem ser realizadas automaticamente e agendadas usando a manutenção planejada. Para obter mais informações, confira Atualizar automaticamente as imagens do nó.

Este artigo mostra como atualizar imagens de nós no cluster do AKS e como atualizar imagens do pool de nós sem atualizar a versão do Kubernetes. Para saber mais sobre como atualizar a versão do Kubernetes para seu cluster, confira Atualizar um cluster do AKS.

Observação

O cluster do AKS deve usar conjuntos de dimensionamento de máquinas virtuais para os nós.

Não é possível fazer downgrade de uma versão de imagem de nó (por exemplo , AKSUbuntu-2204 para AKSUbuntu-1804 ou AKSUbuntu-2204-202308.01.0 para AKSUbuntu-2204-202307.27.0).

Verifique se há atualizações de imagem de nó disponíveis

Verifique se há atualizações de imagem de nó disponíveis usando o comando az aks nodepool get-upgrades.

az aks nodepool get-upgrades \
    --nodepool-name mynodepool \
    --cluster-name myAKSCluster \
    --resource-group myResourceGroup

A saída mostrará o latestNodeImageVersion, como no seguinte exemplo:

{
  "id": "/subscriptions/XXXX-XXX-XXX-XXX-XXXXX/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/mynodepool/upgradeProfiles/default",
  "kubernetesVersion": "1.17.11",
  "latestNodeImageVersion": "AKSUbuntu-1604-2020.10.28",
  "name": "default",
  "osType": "Linux",
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.ContainerService/managedClusters/agentPools/upgradeProfiles",
  "upgrades": null
}

O exemplo de saída mostra AKSUbuntu-1604-2020.10.28 como latestNodeImageVersion.

Compare a versão mais recente com a versão da imagem do nó atual usando o comando az aks nodepool show.

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --query nodeImageVersion

Seu resultado deve ser semelhante ao seguinte exemplo:

"AKSUbuntu-1604-2020.10.08"

Neste exemplo, há uma atualização disponível da versão da imagem do nó, que é da versão AKSUbuntu-1604-2020.10.08 para a versão AKSUbuntu-1604-2020.10.28.

Atualizar todas as imagens de nós em todos os pools de nós

Atualize a imagem do nó utilizando o comando az aks upgrade com o sinalizador --node-image-only.

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-image-only

Você pode verificar o estado das imagens do nó usando o comando kubectl get nodes.

Observação

Esse comando pode ser um pouco diferente dependendo do shell que você usa. Para obter mais informações sobre ambientes do Windows e do PowerShell, consulte a documentação JSONPath do Kubernetes.

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

Quando a atualização estiver concluída, utilize o comando az aks show para obter os detalhes atualizados do pool de nós. A imagem do nó atual é mostrada na propriedade nodeImageVersion.

az aks show \
    --resource-group myResourceGroup \
    --name myAKSCluster

Atualizar um pool de nós específico

Para atualizar a imagem do SO de um pool de nós sem fazer uma atualização do cluster do Kubernetes, utilize o comando az aks nodepool upgrade com o sinalizador --node-image-only.

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-image-only

Você pode verificar o estado das imagens do nó com o comando kubectl get nodes.

Observação

Esse comando pode ser um pouco diferente dependendo do shell que você usa. Para obter mais informações sobre ambientes do Windows e do PowerShell, consulte a documentação JSONPath do Kubernetes.

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

Quando a atualização estiver concluída, utilize o comando az aks nodepool show para obter os detalhes atualizados do pool de nós. A imagem do nó atual é mostrada na propriedade nodeImageVersion.

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool

Atualizar imagens de nó com surtos de nó

Para acelerar o processo de atualização de imagem de nó, atualize suas imagens de nó usando um valor de surto de nó personalizável. Por padrão, o AKS usa um nó adicional para configurar atualizações.

Se você quiser aumentar a velocidade das atualizações, use o comando az aks nodepool update com o sinalizador --max-surge para configurar o número de nós usados para atualizações. Para saber mais sobre as compensações de várias configurações --max-surge, confira Personalizar atualização de surtos de nó.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --max-surge 33% \
    --no-wait

Você pode verificar o estado das imagens do nó com o comando kubectl get nodes.

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

Use az aks nodepool show para obter os detalhes do pool de nós atualizados. A imagem do nó atual é mostrada na propriedade nodeImageVersion.

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool

Próximas etapas