Aggiornare le immagini dei nodi del servizio Azure Kubernetes (AKS)

Il servizio Azure Kubernetes (AKS) offre regolarmente nuove immagini dei nodi, quindi è utile aggiornare frequentemente le immagini dei nodi per usare le funzionalità più recenti del servizio Azure Kubernetes. Le immagini dei nodi Linux vengono aggiornate ogni settimana e le immagini dei nodi Windows vengono aggiornate ogni mese. Gli annunci di aggiornamento delle immagini sono inclusi nelle note sulla versione del servizio Azure Kubernetes e può essere necessaria fino a una settimana perché questi aggiornamenti vengano implementati in tutte le aree. È anche possibile eseguire automaticamente gli aggiornamenti delle immagini del nodo e pianificarli usando la manutenzione pianificata. Per altre informazioni, vedere Aggiornare automaticamente le immagini dei nodi.

Questo articolo illustra come aggiornare le immagini dei nodi del cluster del servizio Azure Kubernetes e come aggiornare le immagini del pool di nodi senza aggiornare la versione di Kubernetes. Per informazioni sull'aggiornamento della versione di Kubernetes per il cluster, vedere Aggiornare un cluster del servizio Azure Kubernetes.

Nota

Il cluster del servizio Azure Kubernetes deve usare i set di scalabilità di macchine virtuali per i nodi.

Non è possibile effettuare il downgrade di una versione dell'immagine del nodo, ad esempio da AKSUbuntu-2204 a AKSUbuntu-1804 o da AKSUbuntu-2204-202308.01.0 a AKSUbuntu-2204-202307.27.0.

Verificare la disponibilità di aggiornamenti delle immagini dei nodi

  1. Verificare la disponibilità di aggiornamenti delle immagini dei nodi usando il 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. Nell'output trovare e prendere nota del latestNodeImageVersion valore. Questo valore è la versione più recente dell'immagine del nodo disponibile per il pool di nodi.

  3. Controllare la versione corrente dell'immagine del nodo per confrontare con la versione più recente usando il az aks nodepool show comando .

    az aks nodepool show \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --query nodeImageVersion
    
  4. Se il nodeImageVersion valore è diverso da latestNodeImageVersion, è possibile aggiornare l'immagine del nodo.

Aggiornare tutte le immagini dei nodi in tutti i pool di nodi

  1. Aggiornare tutte le immagini di nodo in tutti i pool di nodi del cluster usando il az aks upgrade comando con il --node-image-only flag .

    az aks upgrade \
        --resource-group <resource-group> \
        --name <cluster-name> \
        --node-image-only
    
  2. È possibile controllare lo stato delle immagini dei nodi usando il comando kubectl get nodes.

    Nota

    Questo comando potrebbe variare leggermente a seconda della shell usata. Per altre informazioni sugli ambienti Windows e PowerShell, vedere la documentazione JSONPath di Kubernetes.

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  3. Al termine dell'aggiornamento, usare il az aks show comando per ottenere i dettagli del pool di nodi aggiornati. L'immagine del nodo corrente viene visualizzata nella proprietà nodeImageVersion.

    az aks show \
        --resource-group <resource-group> \
        --name <cluster-name>
    

Aggiornare un pool di nodi specifico

  1. Aggiornare l'immagine del sistema operativo di un pool di nodi senza eseguire un aggiornamento del cluster Kubernetes usando il az aks nodepool upgrade comando con il --node-image-only flag .

    az aks nodepool upgrade \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --node-image-only
    
  2. È possibile controllare lo stato delle immagini dei nodi usando il comando kubectl get nodes.

    Nota

    Questo comando può variare leggermente a seconda della shell usata. Per altre informazioni sugli ambienti Windows e PowerShell, vedere la documentazione JSONPath di Kubernetes.

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  3. Al termine dell'aggiornamento, usare il az aks nodepool show comando per ottenere i dettagli del pool di nodi aggiornati. L'immagine del nodo corrente viene visualizzata nella proprietà nodeImageVersion.

    az aks nodepool show \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name>
    

Aggiornare le immagini dei nodi con node:surge

Per velocizzare il processo di aggiornamento delle immagini dei nodi, è possibile aggiornare le immagini dei nodi usando un valore di picco del nodo personalizzabile. Per impostazione predefinita, il servizio Azure Kubernetes usa un nodo aggiuntivo per configurare gli aggiornamenti.

  1. Aggiornare le immagini dei nodi con aumento del nodo usando il comando con il az aks nodepool update --max-surge flag per configurare il numero di nodi usati per gli aggiornamenti.

    Nota

    Per altre informazioni sui compromessi di varie impostazioni di --max-surge, vedere Personalizzare l'aggiornamento del picco di nodi.

    az aks nodepool update \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --max-surge 33% \
        --no-wait
    
  2. È possibile controllare lo stato delle immagini dei nodi usando il 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. Ottenere i dettagli del pool di nodi aggiornati usando az aks nodepool show per ottenere i dettagli del pool di nodi aggiornati. L'immagine del nodo corrente viene visualizzata nella proprietà nodeImageVersion.

    az aks nodepool show \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <node-pool-name>
    

Passaggi successivi