Delen via


Een AKS-cluster (Azure Kubernetes Service) upgraden

Een deel van de levenscyclus van het AKS-cluster omvat het uitvoeren van periodieke upgrades naar de nieuwste Kubernetes-versie. Het is belangrijk dat u de nieuwste beveiligingsreleases en upgrades toepast om de nieuwste functies te verkrijgen. In dit artikel leest u hoe u kunt controleren op en upgrades kunt toepassen op uw AKS-cluster.

Kubernetes-versie-upgrades

Wanneer u een upgrade uitvoert van een ondersteund AKS-cluster, kunt u de secundaire versies van Kubernetes niet overslaan. U moet alle upgrades sequentieel uitvoeren op primaire versienummer. Upgrades tussen 1.14.x ->1.15.x of 1.15.x ->1.16.x zijn bijvoorbeeld toegestaan. 1.14.x ->1.16.x is niet toegestaan. U kunt alleen meerdere versies overslaan wanneer u een upgrade uitvoert van een niet-ondersteunde versie naar een ondersteunde versie. U kunt bijvoorbeeld een upgrade uitvoeren van een niet-ondersteunde 1.10.x naar een ondersteunde 1.12.x , indien beschikbaar.

Wanneer u een upgrade uitvoert van een niet-ondersteunde versie die twee of meer secundaire versies overslaat, heeft de upgrade geen garantie voor functionaliteit en wordt uitgesloten van de serviceovereenkomsten en beperkte garantie. Als uw versie aanzienlijk verouderd is, raden we u aan uw cluster opnieuw te maken.

Voordat u begint

  • Als u de Azure CLI gebruikt, is voor dit artikel Azure CLI versie 2.34.1 of hoger vereist. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
  • Als u Azure PowerShell gebruikt, is voor dit artikel Versie 5.9.0 of hoger van Azure PowerShell vereist. Voer Get-InstalledModule -Name Az uit om de versie te bekijken. Als u PowerShell wilt installeren of upgraden, raadpleegt u De Azure PowerShell installeren.
  • Voor het uitvoeren van upgradebewerkingen is de Microsoft.ContainerService/managedClusters/agentPools/write RBAC-rol vereist. Zie de bewerkingen van de Azure-resourceprovider voor meer informatie over Azure RBAC-rollen.
  • Vanaf versie 1.30 kubernetes en 1.27 LTS-versies worden de bèta-API's standaard uitgeschakeld wanneer u een upgrade naar deze API's uitvoert.

Waarschuwing

Een AKS-clusterupgrade activeert het afbakenen en legen van uw knooppunten. Als er een laag rekenquotum beschikbaar is, kan de upgrade mislukken. Zie quota verhogen voor meer informatie.

Controleren op beschikbare AKS-clusterupgrades

Notitie

Als u op de hoogte wilt blijven van AKS-fixes, releases en updates, raadpleegt u de AKS-vrijgavetracker.

  • Controleer met de az aks get-upgrades opdracht welke Kubernetes-releases beschikbaar zijn voor uw cluster.

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

    In de volgende voorbeelduitvoer ziet u de huidige versie als 1.26.6 en worden de beschikbare versies vermeld onder upgrades:

    {
      "agentPoolProfiles": null,
      "controlPlaneProfile": {
        "kubernetesVersion": "1.26.6",
        ...
        "upgrades": [
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.1"
          },
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.3"
          }
        ]
      },
      ...
    }
    

Foutberichten bij het upgraden van AKS-clusters oplossen

De volgende voorbeelduitvoer betekent dat de appservice-kube extensie niet compatibel is met uw Azure CLI-versie (minimaal versie 2.34.1 is vereist):

The 'appservice-kube' extension is not compatible with this version of the CLI.
You have CLI core version 2.0.81 and this extension requires a min of 2.34.1.
Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.

Als u deze uitvoer ontvangt, moet u uw Azure CLI-versie bijwerken. De az upgrade opdracht is toegevoegd in versie 2.11.0 en werkt niet met versies vóór 2.11.0. U kunt oudere versies bijwerken door Azure CLI opnieuw te installeren, zoals beschreven in De Azure CLI installeren. Als uw Azure CLI-versie 2.11.0 of hoger is, voert u een az upgrade upgrade uit naar de nieuwste versie van Azure CLI.

Als uw Azure CLI is bijgewerkt en u de volgende voorbeelduitvoer ontvangt, betekent dit dat er geen upgrades beschikbaar zijn:

ERROR: Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.

Als er geen upgrades beschikbaar zijn, maakt u een nieuw cluster met een ondersteunde versie van Kubernetes en migreert u uw workloads van het bestaande cluster naar het nieuwe cluster. AKS biedt geen ondersteuning voor het upgraden van een cluster naar een nieuwere Kubernetes-versie wanneer az aks get-upgrades wordt aangegeven dat er geen upgrades beschikbaar zijn.

Een AKS-cluster upgraden

Tijdens het upgradeproces van het cluster voert AKS de volgende bewerkingen uit:

  • Voeg een nieuw bufferknooppunt (of zo veel knooppunten als geconfigureerd in maximale piek) toe aan het cluster waarop de opgegeven Kubernetes-versie wordt uitgevoerd.
  • Cordon en leeg een van de oude knooppunten om onderbreking van actieve toepassingen te minimaliseren. Als u een maximale piek gebruikt, worden er net zoveel knooppunten tegelijk leeggemaakt als het aantal opgegeven bufferknooppunten.
  • Voor langlopende pods kunt u de time-out voor het leegmaken van knooppunten configureren, waardoor aangepaste wachttijden mogelijk zijn voor het verwijderen van pods en een respijtelijke beëindiging per knooppunt. Als dit niet is opgegeven, is de standaardwaarde 30 minuten. De minimaal toegestane time-outwaarde is 5 minuten.
  • Wanneer het oude knooppunt volledig leeg is, wordt de installatiekopie opnieuw geplaatst om de nieuwe versie te ontvangen en wordt het bufferknooppunt voor het volgende knooppunt dat moet worden bijgewerkt.
  • U kunt eventueel een tijdsduur instellen om te wachten tussen het leegmaken van een knooppunt en door te gaan met het opnieuw maken van de installatiekopie en door te gaan naar het volgende knooppunt. Met een kort interval kunt u andere taken uitvoeren, zoals het controleren van de toepassingsstatus van een Grafana-dashboard tijdens het upgradeproces. We raden een korte periode aan voor het upgradeproces, zo dicht mogelijk bij 0 minuten. Anders is een hogere knooppuntweektijd van invloed op hoe lang voordat u een probleem ontdekt. De minimale weektijdwaarde is 0 minuten, met een maximum van 30 minuten. Als dit niet is opgegeven, is de standaardwaarde 0 minuten.
  • Dit proces wordt herhaald totdat alle knooppunten in het cluster worden bijgewerkt.
  • Aan het einde van het proces wordt het laatste bufferknooppunt verwijderd, waarbij het bestaande aantal agentknooppunten en het zonesaldo behouden blijven.

Notitie

Als er geen patch is opgegeven, wordt het cluster automatisch bijgewerkt naar de gespecificeerde secundaire versie, nieuwste GA-patch. Bijvoorbeeld instelling --kubernetes-version voor 1.28 resultaten in het upgraden van het cluster naar 1.28.9.

Bekijk Ondersteunde Kubernetes-secundaire versie-upgrades in AKS voor meer informatie.

  1. Werk uw cluster bij met behulp van de az aks upgrade opdracht.

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version <KUBERNETES_VERSION>
    
  2. Controleer of de upgrade is geslaagd met behulp van de az aks show opdracht.

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

    In de volgende voorbeelduitvoer ziet u dat het cluster nu 1.27.3 uitvoert:

    Name          Location    ResourceGroup    KubernetesVersion    ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  -------------------  ----------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.27.3               Succeeded            myakscluster-dns-379cbbb9.hcp.eastus.azmk8s.io
    

Kanaal voor automatische upgrade instellen

U kunt een kanaal voor automatische upgrade instellen op uw cluster. Zie Een AKS-cluster automatisch upgraden voor meer informatie.

Upgrade van knooppuntpieken aanpassen

Belangrijk

  • Voor knooppuntpieken is het abonnementsquotum vereist voor het aangevraagde maximumaantal pieken voor elke upgradebewerking. Een cluster met vijf knooppuntgroepen, elk met een telling van vier knooppunten, heeft bijvoorbeeld in totaal 20 knooppunten. Als elke knooppuntgroep een maximale piekwaarde van 50% heeft, is extra reken- en IP-quotum van 10 knooppunten (2 knooppunten * 5 pools) vereist om de upgrade te voltooien.

  • De maximale piekinstelling voor een knooppuntgroep is permanent. Bij volgende Kubernetes-upgrades of knooppuntversie-upgrades wordt deze instelling gebruikt. U kunt de maximale piekwaarde voor uw knooppuntgroepen op elk gewenst moment wijzigen. Voor productieknooppuntgroepen raden we een instelling voor maximale piek van 33% aan.

  • Als u Azure CNI gebruikt, controleert u of er beschikbare IP-adressen in het subnet zijn om te voldoen aan DE IP-vereisten van Azure CNI.

AKS configureert upgrades om te pieken met één extra knooppunt standaard. Met een standaardwaarde van één voor de maximale piekinstellingen kan AKS werkbelastingonderbreking minimaliseren door een extra knooppunt te maken voordat de cordon/drain van bestaande toepassingen een oudere versie van een knooppunt vervangt. U kunt de maximale piekwaarde per knooppuntgroep aanpassen. Wanneer u de maximale piekwaarde verhoogt, wordt het upgradeproces sneller voltooid en kunnen er onderbrekingen optreden tijdens het upgradeproces.

Een maximale piekwaarde van 100% biedt bijvoorbeeld het snelst mogelijke upgradeproces, maar zorgt er ook voor dat alle knooppunten in de knooppuntgroep tegelijkertijd worden leeggezogen. Mogelijk wilt u een hogere waarde gebruiken, zoals deze voor testomgevingen. Voor productieknooppuntgroepen raden we een max_surge instelling van 33% aan.

AKS accepteert zowel gehele getallen als een percentagewaarde voor een maximale piek. Een geheel getal, zoals 5 , geeft vijf extra knooppunten aan die moeten toenemen. Een waarde van 50% geeft een piekwaarde aan van de helft van het huidige aantal knooppunten in de pool. Het maximumaantal piekpercentagewaarden kan minimaal 1% zijn en maximaal 100%. Een percentagewaarde wordt naar boven afgerond op het dichtstbijzijnde aantal knooppunten. Als de maximale piekwaarde hoger is dan het vereiste aantal knooppunten dat moet worden bijgewerkt, wordt het aantal knooppunten dat moet worden bijgewerkt, gebruikt voor de maximale piekwaarde. Tijdens een upgrade kan de maximale piekwaarde minimaal 1 zijn en een maximumwaarde gelijk aan het aantal knooppunten in uw knooppuntgroep. U kunt grotere waarden instellen, maar u kunt niet het maximum aantal knooppunten instellen dat wordt gebruikt voor een maximale piek die hoger is dan het aantal knooppunten in de pool op het moment van de upgrade.

Maximale piekwaarde instellen

  • Stel de maximale piekwaarden in voor nieuwe of bestaande knooppuntgroepen met behulp van de az aks nodepool add of az aks nodepool update opdracht.

    # Set max surge for a new node pool
    az aks nodepool add --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33%
    
    # Update max surge for an existing node pool 
    az aks nodepool update --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 5
    

Time-outwaarde voor knooppuntafvoer instellen

Soms hebt u mogelijk een langlopende workload op een bepaalde pod en kan deze niet opnieuw worden gepland naar een ander knooppunt tijdens runtime, bijvoorbeeld een geheugenintensieve stateful workload die moet worden uitgevoerd. In deze gevallen kunt u een time-out voor het leegmaken van knooppunten configureren die AKS in de upgradewerkstroom respecteert. Als er geen time-outwaarde voor knooppuntafvoer is opgegeven, is de standaardwaarde 30 minuten. De minimaal toegestane time-outwaarde voor afvoer is 5 minuten.

Als de time-outwaarde voor afvoeren is verstreken en pods nog steeds actief zijn, wordt de upgradebewerking gestopt. Elke volgende PUT-bewerking hervat de gestopte upgrade.

  • Stel de time-out voor het leegmaken van knooppunten in voor nieuwe of bestaande knooppuntgroepen met behulp van de az aks nodepool add of az aks nodepool update opdracht.

    # Set drain timeout for a new node pool
    az aks nodepool add --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster  --drain-timeout 100
    
    # Update drain timeout for an existing node pool
    az aks nodepool update --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --drain-timeout 45
    

Waarde voor knooppuntweektijd instellen

Als u een wachttijd wilt toestaan tussen het leegmaken van een knooppunt en door te gaan met het opnieuw instellen van de installatiekopie en door te gaan naar het volgende knooppunt, kunt u de weektijd instellen op een waarde tussen 0 en 30 minuten. Als er geen knooppuntweektijdwaarde is opgegeven, is de standaardwaarde 0 minuten.

  • Stel de knooppuntweektijd in voor nieuwe of bestaande knooppuntgroepen met behulp van de az aks nodepool addopdracht of az aks nodepool updatede az aks nodepool upgrade opdracht.

    # Set node soak time for a new node pool
    az aks nodepool add --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --node-soak-duration 10
    
    # Update node soak time for an existing node pool
    az aks nodepool update --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 5
    
    # Set node soak time when upgrading an existing node pool
    az aks nodepool upgrade --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 20
    

Upgrade-gebeurtenissen weergeven

  • Bekijk upgrade-gebeurtenissen met behulp van de kubectl get events opdracht.

    kubectl get events 
    

    In de volgende voorbeelduitvoer ziet u enkele van de bovenstaande gebeurtenissen die tijdens een upgrade worden vermeld:

    ...
    default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001]
    ...
    default 1m45s Normal Upgrade node/aks-nodepool1-96663640-vmss000001   Soak duration 5m0s after draining node: aks-nodepool1-96663640-vmss000001
    ...
    default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool nodepool1
    ...
    

Volgende stappen

Zie Automatische upgrades configureren voor een AKS-cluster voor meer informatie over het configureren van automatische upgrades.

Zie AKS-patch- en upgraderichtlijnen voor een gedetailleerde bespreking van best practices en andere overwegingen voor upgrades.