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

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

Este artigo mostra como atualizar imagens de nó de cluster AKS e como atualizar imagens de pool de nós sem atualizar a versão do Kubernetes. Para obter informações sobre como atualizar a versão do Kubernetes para seu cluster, consulte Atualizar um cluster AKS.

Nota

O cluster AKS deve usar conjuntos de escala de máquina virtual 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).

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

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

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

A saída mostra o latestNodeImageVersion, como no exemplo a seguir:

{
  "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
}

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

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

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

O resultado deverá ter um aspeto semelhante ao seguinte exemplo:

"AKSUbuntu-1604-2020.10.08"

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

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

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

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

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

Nota

Este comando pode diferir ligeiramente dependendo do shell que você usa. Para obter mais informações sobre ambientes Windows e PowerShell, consulte a documentação do Kubernetes JSONPath.

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, use o az aks show comando para obter os detalhes do pool de nós atualizados. A imagem do nó atual é mostrada na propriedade nodeImageVersion.

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

Atualizar um conjunto de nós específico

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

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

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

Nota

Este comando pode diferir ligeiramente dependendo do shell que você usa. Para obter mais informações sobre ambientes Windows e PowerShell, consulte a documentação do Kubernetes JSONPath.

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, use o az aks nodepool show comando 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

Atualizar imagens do nó com aumento de nós

Para acelerar o processo de atualização da imagem do nó, você pode atualizar as imagens do nó usando um valor de aumento de nó personalizável. Por padrão, o AKS usa um nó extra para configurar atualizações.

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

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

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

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 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

Próximos passos