Självstudie – Uppgradera ett AKS-kluster (Azure Kubernetes Service)

Som en del av programmets och klustrets livscykel kanske du vill uppgradera till den senaste tillgängliga versionen av Kubernetes. Du kan uppgradera ditt AkS-kluster (Azure Kubernetes Service) med hjälp av Azure CLI, Azure PowerShell eller Azure Portal.

I den här handledningen uppgraderar du ett AKS-kluster. Du lär dig att:

  • Identifiera aktuella och tillgängliga Kubernetes-versioner.
  • Uppgradera kubernetes-noderna.
  • Verifiera en lyckad uppgradering.

Innan du börjar

I tidigare självstudier paketerade du ett program i en containeravbildning och laddade upp containeravbildningen till Azure Container Registry (ACR). Du har också skapat ett AKS-kluster och distribuerat ett program till det. Om du inte har slutfört de här stegen och vill följa med börjar du med Självstudie 1 – Förbereda programmet för AKS.

Om du använder Azure CLI så kräver den här handledningen Azure CLI version 2.34.1 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Om du använder Azure PowerShell behöver du Azure PowerShell version 5.9.0 eller senare för den här självstudien. Kör Get-InstalledModule -Name Az för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Install Azure PowerShell (Installera Azure PowerShell).

För att uppgradera ett AKS-kluster behöver du rollen Azure Kubernetes Service Contributor eller motsvarande behörigheter.

Innan du uppgraderar bör du granska AKS-versionsinformationen för icke-bakåtkompatibla ändringar och föråldrade API:er. Validera även arbetsbelastningens Pod Disruption Budgets (PDB:er), tillgänglig beräkningskvot och undernätets IP-kapacitet för surgenoder. Mer information finns i Uppgraderingsalternativ och rekommendationer för AKS-kluster.

Hämta tillgängliga klusterversioner med hjälp av Azure CLI

Innan du uppgraderar kontrollerar du vilka Kubernetes-versioner som är tillgängliga för klustret med hjälp az aks get-upgrades av kommandot .

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster

Följande exempelutdata visar ett klusters aktuella version och visar nyare versioner under upgrades:

  {
    "agentPoolProfiles": null,
    "controlPlaneProfile": {
      "kubernetesVersion": "1.33.7",
      ...
      "upgrades": [
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.10"
        },
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.9"
        }
      ]
    },
    ...
  }

Hämta tillgängliga klusterversioner med hjälp av Azure PowerShell

  1. Innan du uppgraderar kontrollerar du klustrets aktuella Kubernetes-version och -region med hjälp av cmdleten Get-AzAksCluster .

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
      Select-Object -Property Name, CurrentKubernetesVersion, Location
    

    Följande exempelutdata visar klustrets aktuella version och plats:

    Name              CurrentKubernetesVersion      Location
    ----              ------------------------      --------
    myAKSCluster      1.33.7                        westus2
    
  2. Lista de Kubernetes-versioner som är tillgängliga i den region där klustret finns med hjälp av cmdleten Get-AzAksVersion .

    Get-AzAksVersion -Location westus2 | Where-Object OrchestratorVersion
    

    Följande exempelutdata visar de regionala versionerna under OrchestratorVersion:

    Default     IsPreview     OrchestratorType     OrchestratorVersion
    -------     ---------     ----------------     -------------------
                              Kubernetes               1.34.10
                              Kubernetes               1.34.9
    True                      Kubernetes               1.33.7
    ...
    

    Om du vill identifiera potentiella uppgraderingsmål jämför du versioner som är nyare än klustrets aktuella version med uppgraderingsreglerna för Kubernetes-versionen. Den här cmdleten visar regional tillgänglighet och validerar inte uppgraderingssökvägen för ett specifikt kluster.

Hämta tillgängliga klusterversioner med hjälp av Azure-portalen

  1. Logga in på Azure-portalen.

  2. Gå till din AKS-klusterresurs.

  3. På tjänstmenyn går du till Inställningar och väljer Uppgraderingar.

  4. Efter Kubernetes-version, välj Uppgradera version.

    Skärmbild av alternativet Uppgradera version i Azure-portalen.

  5. På sidan Uppgradera Kubernetes-version väljer du listrutan Kubernetes-version för att visa tillgängliga Kubernetes-versioner för uppgradering.

    Skärmbild av skärmen Uppgradera version med tillgängliga uppgraderingsversioner.

Om inga uppgraderingar är tillgängliga kanske klustret redan har den senaste tillgängliga versionen eller så kan klusterversionen ligga utanför supportfönstret. Om versionen inte stöds och AKS inte erbjuder någon återställningsuppgradering skapar du ett nytt kluster med en Kubernetes-version som stöds och migrerar dina arbetsbelastningar. Mer information finns i AKS-supportprinciper för Kubernetes-versioner.

AKS-klustrets uppgraderingsprocess

AKS-noder är noggrant avspärrade och tömda för att minimera eventuella störningar i program som körs. Under den här processen utför AKS följande steg:

  • Lägger till en ny buffertnod (eller så många noder som konfigurerats i maximal ökning) till klustret som kör den angivna Kubernetes-versionen.
  • Dränerar och begränsar en av de gamla noderna för att minimera störningar i program som körs. Om du använder maximal ökning av kapacitet isolerar och tömmer den lika många noder samtidigt som det angivna antalet buffertnoder.
  • När den gamla noden är helt tömd återskapas den för att ta emot den nya versionen och blir buffertnoden för följande nod som ska uppgraderas.
  • Den här processen upprepas tills alla noder i klustret har uppgraderats.
  • I slutet av processen tas den sista buffertnoden bort, vilket bibehåller det befintliga antalet agentnoder och zonsaldot.

Kommentar

Om ingen korrigering anges uppgraderas klustret automatiskt till den angivna delversionens senaste GA-korrigering. Om du till exempel ställer in --kubernetes-version på resulterar det i att 1.28 klustret uppgraderas till 1.28.9.

Mer information finns i Kubernetes-delversionsuppgraderingar som stöds i AKS.

Du kan antingen uppgradera klustret manuellt eller konfigurera automatiska klusteruppgraderingar. Konfigurera automatiska klusteruppgraderingar för att hålla klustret på en version av Kubernetes som stöds.

Uppgradera klustret manuellt med hjälp av Azure CLI

Uppgradera klustret med kommandot az aks upgrade. I det här exemplet uppgraderas klustret till version 1.34.10:

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version 1.34.10

Kommentar

Kluster utan LTS-stöd måste uppgraderas en mindre version i taget. Om du till exempel vill uppgradera från 1.33.x till 1.35.x uppgraderar du först till 1.34.x. Ett LTS-kluster kan hoppa över mindre versioner när de flyttas till en högre LTS-version som erbjuds av AKS om uppgraderingen uppfyller kraven på versionsförskjutning och verifieringskontroller. Mer information finns i Uppgraderingsregler för Kubernetes-version.

Följande exempelutdata visar resultatet av uppgraderingen. Värdet kubernetesVersion matchar nu den version som anges i exempelkommandot:

{
  ...
  "agentPoolProfiles": [
    {
      ...
      "count": 3,
      "currentOrchestratorVersion": "1.34.10",
      "maxPods": 110,
      "name": "nodepool1",
      "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202608.26.0",
      "orchestratorVersion": "1.34.10",
      "osType": "Linux",
      "upgradeSettings": {
        "drainTimeoutInMinutes": null,
        "maxSurge": "10%",
        "nodeSoakDurationInMinutes": null,
        "undrainableNodeBehavior": null
      },
      "vmSize": "Standard_DS2_v2",
      ...
    }
  ],
  ...
  "currentKubernetesVersion": "1.34.10",
  "dnsPrefix": "myAKSClust-myResourceGroup-12ab34",
  "enableRbac": false,
  "fqdn": "myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io",
  "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
  "kubernetesVersion": "1.34.10",
  "location": "westus2",
  "name": "myAKSCluster",
  "type": "Microsoft.ContainerService/ManagedClusters"
  ...
}

Uppgradera klustret manuellt med Azure PowerShell

Uppgradera klustret med hjälp av cmdleten Set-AzAksCluster . I det här exemplet uppgraderas klustret till version 1.34.10:

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -KubernetesVersion 1.34.10

Kommentar

Icke-LTS-kluster som stöds måste uppgraderas ett mindre versionssteg i taget. Om du till exempel vill uppgradera från 1.33.x till 1.35.x uppgraderar du först till 1.34.x. Ett LTS-kluster kan hoppa över mindre versioner när de flyttas till en högre LTS-version som erbjuds av AKS om uppgraderingen uppfyller kraven på versionsförskjutning och verifieringskontroller. Mer information finns i Uppgraderingsregler för Kubernetes-version.

Följande exempelutdata visar resultatet av uppgraderingen. Värdet KubernetesVersion matchar nu den version som anges i exempel-cmdleten:

...
ProvisioningState        : Succeeded
MaxAgentPools            : 100
KubernetesVersion        : 1.34.10
CurrentKubernetesVersion : 1.34.10
...
ResourceGroupName        : myResourceGroup
Name                     : myAKSCluster
Type                     : Microsoft.ContainerService/ManagedClusters
Location                 : westus2
Tags                     :

Uppgradera klustret manuellt med hjälp av Azure-portalen

  1. I Azure Portal navigerar du till aks-klusterresursen.

  2. På tjänstmenyn går du till Inställningar och väljer Uppgraderingar.

  3. Efter Kubernetes-version, välj Uppgradera version.

    Skärmbild av alternativet Uppgradera version i Azure-portalen.

  4. På sidan Uppgradera Kubernetes-version väljer du listrutan Kubernetes-version för att visa tillgängliga Kubernetes-versioner för uppgradering.

    Skärmbild av skärmen Uppgradera version med tillgängliga uppgraderingsversioner.

  5. Välj den Kubernetes-version som du vill uppgradera till och välj sedan Spara.

Uppgraderingens varaktighet beror på faktorer som antalet noder, överspänningsinställningar, begränsningar för arbetsbelastningsavbrott, timeout för tömning och varaktighet för nodavblödning. Standardtimeouten för tömning är 30 minuter per nod och kan konfigureras från fem minuter till 24 timmar. Node-soaktiden kan lägga till mellan 0 och 30 minuter per nod. Mer information finns i Anpassa överspänning av nodpooler och otillgängliga inställningar.

Konfigurera automatiska klusteruppgraderingar med hjälp av Azure CLI

Konfigurera automatiska klusteruppgraderingar med hjälp av Azure PowerShell

Konfigurera automatiska klusteruppgraderingar med hjälp av Azure-portalen

AKS Automatiska kluster använder stable kanalen och du behöver inte konfigurera en kanal. För AKS Standard-kluster väljer du en kanal baserat på din versionsprincip. Kanalerna stable och rapid avancerar Kubernetes-delversioner och hjälper till att hålla klustret inom det versionsfönster som stöds. Kanalen patch installerar endast korrigeringar för den aktuella delversionen och avancerar inte klustret till en nyare delversion.

I ett AKS Standard-kluster anger du kanalen för automatisk uppgradering med kommandot az aks update. I följande exempel används stable kanalen:

az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable

I ett AKS Standard-kluster anger du autoupgrade-kanalen med hjälp av cmdleten Set-AzAksCluster . I följande exempel används Stable kanalen:

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -AutoUpgradeChannel Stable
  1. I Azure Portal navigerar du till aks-klusterresursen.

  2. På tjänstmenyn går du till Inställningar och väljer Uppgraderingar.

  3. Efter Kubernetes-version, välj Uppgradera version.

    Skärmbild av alternativet Uppgradera version i Azure-portalen.

  4. För ett AKS Standard-kluster går du till sidan Uppgradera Kubernetes-version , väljer listrutan Automatisk uppgradering , väljer Aktiverad med stabil och väljer sedan Spara.

    Skärmbild av sidan Uppgradera Kubernetes-version som visar alternativen för automatisk uppgraderingskanal.

Mer information finns i Uppgradera ett AKS-kluster (Azure Kubernetes Service) automatiskt.

Uppgradera nodbilder

AKS tillhandahåller regelbundet nya nodbilder. Linux-nodbilder uppdateras varje vecka och Windows-nodbilder uppdateras varje månad. Vi rekommenderar att du uppgraderar nodbilderna ofta för att använda de senaste AKS-funktionerna och säkerhetsuppdateringarna. Mer information finns i Uppgradera nodbilder i Azure Kubernetes Service (AKS). Information om hur du konfigurerar automatiska nodavbildningsuppgraderingar finns i Uppgradera azure Kubernetes Service -klusternodens operativsystemavbildningar automatiskt.

Visa uppgraderingshändelser

Kommentar

När du uppgraderar klustret kan följande Kubernetes-händelser inträffa på noderna:

  • Överspänning: Skapa en överspänningsnod.
  • Dränera: Avlägsna poddar från noden. AKS tillåter 30 minuter att tömma en nod som standard. Du kan konfigurera tidsgränsen för avlopp från fem minuter till 24 timmar.
  • Uppdatering: Uppdateringen av en nod har slutförts eller misslyckats.
  • Ta bort: Ta bort en överspänningsnod.

kubectl get Använd kommandot med en fältväljare för att visa AKS-uppgraderingshändelser i standardnamnområdet.

kubectl get events --field-selector source=upgrader

Följande exempelutdata visar några av de föregående händelserna som anges under en uppgradering:

LAST SEEN   TYPE      REASON    OBJECT                                   MESSAGE
...
5m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
5m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Deleting node aks-nodepool1-12345678-vmss000000 from API server
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully reimaged node: aks-nodepool1-12345678-vmss000000
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully upgraded node: aks-nodepool1-12345678-vmss000000
4m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
...

Verifiera en uppgradering med hjälp av Azure CLI

Bekräfta att uppgraderingen lyckades genom att använda kommandot az aks show.

az aks show --resource-group myResourceGroup --name myAKSCluster --output table

Följande exempelutdata visar att AKS-klustret kör kubernetes-målversionen:

Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
myAKSCluster  westus2      myResourceGroup  1.34.10              1.34.10                   Succeeded            myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io

Verifiera en uppgradering med hjälp av Azure PowerShell

Bekräfta att uppgraderingen lyckades med hjälp av cmdleten Get-AzAksCluster .

Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
  Select-Object -Property Name, Location, KubernetesVersion, ProvisioningState

Följande exempelutdata visar att AKS-klustret kör kubernetes-målversionen:

Name             Location     KubernetesVersion     ProvisioningState
----             --------     -----------------     -----------------
myAKSCluster     westus2       1.34.10               Succeeded

Verifiera en uppgradering med hjälp av Azure-portalen

  1. I Azure Portal navigerar du till aks-klusterresursen.
  2. På sidan Översikt , under Essentials, kontrollerar du Kubernetes-versionen för att bekräfta att uppgraderingen lyckades.

Ta bort klustret med hjälp av Azure CLI

Ta bort klustret med hjälp av Azure PowerShell

Ta bort klustret med hjälp av Azure-portalen

Eftersom den här självstudien är den sista delen av serien kanske du vill ta bort ditt AKS-kluster för att undvika att debiteras Azure-avgifter.

Ta bort resursgruppen, containertjänsten och alla relaterade resurser med hjälp az group delete av kommandot .

az group delete --name myResourceGroup --yes --no-wait

Ta bort resursgruppen, containertjänsten och alla relaterade resurser med hjälp av cmdleten Remove-AzResourceGroup .

Remove-AzResourceGroup -Name myResourceGroup
  1. I Azure Portal navigerar du till aks-klusterresursen.
  2. Välj Ta bort på sidan Översikt.
  3. På sidan Ta bort klusterbekräftelse väljer du Ta bort.

Kommentar

När du tar bort klustret tas inte Microsoft Entra-tjänstens huvudnamn som används av AKS-klustret bort. Stegvisa instruktioner om hur du tar bort tjänstens huvudnamn finns i dokumentationen om viktiga överväganden och borttagning av AKS-tjänsten. Om du använde en hanterad identitet hanteras identiteten av plattformen och kräver inte att du etablerar eller roterar några hemligheter.

Nästa steg

I den här handledningen har du uppgraderat Kubernetes i ett AKS-kluster. Du har lärt dig att:

  • Identifiera aktuella och tillgängliga Kubernetes-versioner.
  • Uppgradera kubernetes-noderna.
  • Verifiera en lyckad uppgradering.

Mer information om AKS finns i AKS-översikten. Vägledning om hur du skapar fullständiga lösningar med AKS finns i vägledningen för AKS-lösningen.