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. Gli aggiornamenti delle immagini dei nodi possono essere eseguite anche automaticamente e programmate 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

Verificare la disponibilità di aggiornamenti delle immagini dei nodi usando il comando az aks nodepool get-upgrades.

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

L'output mostra latestNodeImageVersion, come nell'esempio seguente:

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

L'output di esempio mostra AKSUbuntu-1604-2020.10.28 come latestNodeImageVersion.

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

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

L'output dovrebbe essere simile all'esempio seguente:

"AKSUbuntu-1604-2020.10.08"

In questo esempio è disponibile un aggiornamento della versione dell'immagine del nodo, vale a dire dalla versione AKSUbuntu-1604-2020.10.08 alla versione AKSUbuntu-1604-2020.10.28.

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

Aggiornare l'immagine del nodo usando il comando az aks upgrade con il flag --node-image-only.

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

È 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}'

Al termine dell'aggiornamento, usare il comando az aks show per ottenere i dettagli aggiornati del pool di nodi. L'immagine del nodo corrente viene visualizzata nella proprietà nodeImageVersion.

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

Aggiornare un pool di nodi specifico

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

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

È 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}'

Al termine dell'aggiornamento, usare il comando az aks nodepool show per ottenere i dettagli aggiornati del pool di nodi. L'immagine del nodo corrente viene visualizzata nella proprietà nodeImageVersion.

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

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.

Se si vuole aumentare la velocità degli aggiornamenti, usare il comando az aks nodepool update con il flag --max-surge per configurare il numero di nodi usati per gli aggiornamenti. 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 myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --max-surge 33% \
    --no-wait

È 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}'

Usare 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 myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool

Passaggi successivi