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. Você também pode executar atualizações de imagem de nó automaticamente e programá-las usando 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

  1. 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 <node-pool-name> \
        --cluster-name <cluster-name> \
        --resource-group <resource-group>
    
  2. Na saída, localize e anote o valor latestNodeImageVersion. Esse valor é a versão mais recente da imagem do nó disponível para seu pool de nós.

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

    az aks nodepool show \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --query nodeImageVersion
    
  4. Se o valor nodeImageVersionfor diferente de latestNodeImageVersion, você poderá atualizar sua imagem de nó.

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

  1. Atualize todas as imagens de nós em todos os pools de nós no seu cluster usando o comando az aks upgrade com o sinalizador --node-image-only.

    az aks upgrade \
        --resource-group <resource-group> \
        --name <cluster-name> \
        --node-image-only
    
  2. 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}'
    
  3. Quando a atualização for concluída, use 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 <resource-group> \
        --name <cluster-name>
    

Atualizar um pool de nós específico

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

    az aks nodepool upgrade \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --node-image-only
    
  2. 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}'
    
  3. Quando a atualização for concluída, use 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 <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name>
    

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.

  1. Atualize as imagens dos nós com o node surge usando o comando az aks nodepool update com o sinalizador --max-surge para configurar o número de nós usados ​​para atualizações.

    Observação

    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 <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --max-surge 33% \
        --no-wait
    
  2. 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}'
    
  3. Obtenha os detalhes atualizados do pool de nós usando 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 <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name>
    

Próximas etapas