Uppgradera AKS-nodbilder (Azure Kubernetes Service)

Azure Kubernetes Service (AKS) tillhandahåller regelbundet nya nodbilder, så det är bra att uppgradera nodbilderna ofta för att använda de senaste AKS-funktionerna. Linux-nodbilder uppdateras varje vecka och Windows-nodbilder uppdateras varje månad. Avbildningsuppgraderingsmeddelanden ingår i AKS-viktig information och det kan ta upp till en vecka innan uppdateringarna distribueras i alla regioner. Nodbilduppgraderingar kan också utföras automatiskt och schemaläggas med planerat underhåll. Mer information finns i Uppgradera nodbilder automatiskt.

Den här artikeln visar hur du uppgraderar AKS-klusternodavbildningar och hur du uppdaterar nodpoolsavbildningar utan att uppgradera Kubernetes-versionen. Information om hur du uppgraderar Kubernetes-versionen för klustret finns i Uppgradera ett AKS-kluster.

Kommentar

AKS-klustret måste använda VM-skalningsuppsättningar för noderna.

Det går inte att nedgradera en nodavbildningsversion (till exempel AKSUbuntu-2204 till AKSUbuntu-1804 eller AKSUbuntu-2204-202308.01.0 till AKSUbuntu-2204-202307.27.0).

Sök efter tillgängliga nodbilduppgraderingar

Kontrollera om det finns tillgängliga nodbildsuppgraderingar med hjälp av az aks nodepool get-upgrades kommandot .

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

Utdata visar latestNodeImageVersion, som i följande exempel:

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

Exempelutdata visas AKSUbuntu-1604-2020.10.28 som latestNodeImageVersion.

Jämför den senaste versionen med din aktuella nodbildversion med hjälp av az aks nodepool show kommandot .

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

Resultatet bör se ut ungefär så här:

"AKSUbuntu-1604-2020.10.08"

I det här exemplet finns det en tillgänglig uppgradering av nodbildens version, som är från version AKSUbuntu-1604-2020.10.08 till version AKSUbuntu-1604-2020.10.28.

Uppgradera alla nodbilder i alla nodpooler

Uppgradera nodbilden med az aks upgrade kommandot med --node-image-only flaggan .

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

Du kan kontrollera statusen för nodbilderna kubectl get nodes med hjälp av kommandot .

Kommentar

Det här kommandot kan variera något beroende på vilket gränssnitt du använder. Mer information om Windows- och PowerShell-miljöer finns i Kubernetes JSONPath-dokumentationen.

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

När uppgraderingen är klar använder du az aks show kommandot för att hämta information om den uppdaterade nodpoolen. Den aktuella nodbilden visas i egenskapen nodeImageVersion.

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

Uppgradera en specifik nodpool

Om du vill uppdatera OS-avbildningen av en nodpool utan att göra en Kubernetes-klusteruppgradering använder du az aks nodepool upgrade kommandot med --node-image-only flaggan .

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

Du kan kontrollera statusen för nodbilderna kubectl get nodes med kommandot .

Kommentar

Det här kommandot kan variera något beroende på vilket gränssnitt du använder. Mer information om Windows- och PowerShell-miljöer finns i Kubernetes JSONPath-dokumentationen.

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

När uppgraderingen är klar använder du az aks nodepool show kommandot för att hämta information om den uppdaterade nodpoolen. Den aktuella nodbilden visas i egenskapen nodeImageVersion.

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

Uppgradera nodavbildningar med fler noder

Om du vill påskynda uppgraderingen av nodbilden kan du uppgradera nodbilderna med hjälp av ett anpassningsbart nodvågsvärde. Som standard använder AKS en extra nod för att konfigurera uppgraderingar.

Om du vill öka uppgraderingshastigheten använder du az aks nodepool update kommandot med --max-surge flaggan för att konfigurera antalet noder som används för uppgraderingar. Mer information om kompromisser med olika --max-surge inställningar finns i Anpassa uppgradering av nodtoppar.

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

Du kan kontrollera statusen för nodbilderna kubectl get nodes med kommandot .

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

Använd az aks nodepool show för att hämta information om den uppdaterade nodpoolen. Den aktuella nodbilden visas i egenskapen nodeImageVersion.

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

Nästa steg