Dela via


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 Azure Kubernetes Service-kluster (AKS) med hjälp av Azure CLI, Azure PowerShell eller Azure-portalen.

I den här självstudien, del sju av sju, 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 kräver den här självstudien 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 kräver den här självstudien Azure PowerShell version 5.9.0 eller senare. 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).

Hämta tillgängliga klusterversioner

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

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

    Följande exempelutdata visar den aktuella versionen som 1.28.9 och visar de tillgängliga versionerna under upgrades:

      {
        "agentPoolProfiles": null,
        "controlPlaneProfile": {
          "kubernetesVersion": "1.28.9",
          ...
          "upgrades": [
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.4"
            },
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.2"
            }
          ]
        },
        ...
      }
    

Uppgradera ett AKS-kluster

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.
  • Avspärrningar och tömmer en av de gamla noderna för att minimera störningar i program som körs. Om du använder maximal ökning spärrar och tömmer den så många noder samtidigt som antalet buffertnoder som anges.
  • 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. Vi rekommenderar att du konfigurerar automatiska klusteruppgraderingar för att säkerställa att klustret alltid kör den senaste versionen av Kubernetes.

Uppgradera klustret manuellt

  • Uppgradera klustret med hjälp av az aks upgrade kommandot .

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version KUBERNETES_VERSION
    
  • Du uppmanas att bekräfta uppgraderingsåtgärden och bekräfta att du vill uppgradera kontrollplanet och alla nodpooler till den valda versionen av Kubernetes:

     Are you sure you want to perform this operation? (y/N): y
    Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
    

    Kommentar

    Du kan endast uppgradera en lägre version i taget. Du kan till exempel uppgradera från 1.14.x till 1.15.x, men du kan inte uppgradera från 1.14.x till 1.16.x direkt. Om du vill uppgradera från 1.14.x till 1.16.x måste du först uppgradera från 1.14.x till 1.15.x och sedan utföra en annan uppgradering från 1.15.x till 1.16.x.

    Följande exempelutdata visar resultatet av uppgraderingen till 1.29.2. Observera att kubernetesVersion nu visas 1.29.2:

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

Konfigurera automatiska klusteruppgraderingar

  • Ange en kanal för automatisk uppgradering i klustret med kommandot az aks update med parametern --auto-upgrade-channel inställd på patch.

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

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

Uppgradera AKS-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ändelserna

Kommentar

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

  • Överspänning: Skapa en överspänningsnod.
  • Tömning: Avlägsna poddar från noden. Varje podd har en timeout på fem minuter för att slutföra borttagningen.
  • Uppdatering: Uppdateringen av en nod har slutförts eller misslyckats.
  • Ta bort: Ta bort en överspänningsnod.
  • Visa uppgraderingshändelserna i standardnamnrymderna med kommandot kubectl get events .

    kubectl get events --field-selector source=upgrader
    

    Följande exempelutdata visar några av ovanstående händelser som anges under en uppgradering:

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

Verifiera en uppgradering

  • Bekräfta att uppgraderingen lyckades med kommandot az aks show .

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

    Följande exempelutdata visar att AKS-klustret kör KubernetesVersion 1.27.3:

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.29.2               1.29.2                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

Ta bort klustret

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 kommandot az group delete .

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

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 självstudien 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.