Delen via


Een Kubernetes-cluster upgraden met behulp van de AKS-engine in Azure Stack Hub

Met de AKS-engine kunt u het Kubernetes-cluster upgraden dat oorspronkelijk is geïmplementeerd met behulp van het hulpprogramma in Azure Stack Hub. U kunt de clusters onderhouden met behulp van de AKS-engine. Uw onderhoudstaken zijn vergelijkbaar met elk IaaS-systeem. U moet rekening houden met de beschikbaarheid van nieuwe updates en de AKS-engine gebruiken om deze toe te passen.

Een cluster upgraden

Met de upgradeopdracht worden de Kubernetes-versie en de basisinstallatiekopieën van het besturingssysteem bijgewerkt. Telkens wanneer u de upgradeopdracht uitvoert, maakt de AKS-engine voor elk knooppunt van het cluster een nieuwe VM met behulp van de AKS-basisinstallatiekopieën die zijn gekoppeld aan de versie van de gebruikte aks-engine .

Voor AKS Engine-versies 0.73.0 en lager kunt u de opdracht gebruiken om de aks-engine upgrade valuta van elk hoofd- en agentknooppunt in uw cluster te onderhouden.

Voor AKS Engine-versies 0.75.3 en hoger kunt u de opdracht gebruiken om de aks-engine-azurestack upgrade valuta van elk hoofd- en agentknooppunt in uw cluster te onderhouden.

Uw cluster wordt niet beheerd door Microsoft. Maar Microsoft biedt het hulpprogramma en de VM-installatiekopieën die u kunt gebruiken om uw cluster te beheren.

Voor een geïmplementeerd cluster hebben upgrades betrekking op:

  • Kubernetes
  • Azure Stack Hub Kubernetes-provider
  • Base OS

Houd bij het upgraden van een productiecluster rekening met het volgende:

  • Gebruikt u de juiste clusterspecificatie (apimodel.json) en resourcegroep voor het doelcluster?
  • Gebruikt u een betrouwbare machine voor de clientcomputer om de AKS-engine uit te voeren en van waaruit u upgradebewerkingen uitvoert?
  • Zorg ervoor dat u een back-upcluster hebt en dat dit operationeel is.
  • Voer indien mogelijk de opdracht uit vanaf een virtuele machine in de Azure Stack Hub-omgeving om de netwerkhops en mogelijke verbindingsfouten te verminderen.
  • Zorg ervoor dat uw abonnement voldoende ruimte heeft voor het hele proces. Tijdens het proces worden nieuwe VM's toegewezen.
  • Er zijn geen systeemupdates of geplande taken gepland.
  • Stel een gefaseerde upgrade in op een cluster dat precies is geconfigureerd als het productiecluster en test de upgrade daar voordat u dit doet in uw productiecluster

Stappen voor het upgraden naar een nieuwere Kubernetes-versie

Notitie

De AKS-basisinstallatiekopieën worden ook bijgewerkt als u een nieuwere versie van de aks-engine gebruikt en de installatiekopieën beschikbaar zijn in marketplace.

In de volgende instructies worden de minimale stappen gebruikt om de upgrade uit te voeren. Zie het artikel Kubernetes-clusters upgraden voor meer informatie.

  1. U moet eerst bepalen welke versies u kunt gebruiken voor de upgrade. Deze versie is afhankelijk van de versie die u momenteel hebt en gebruik vervolgens die versiewaarde om de upgrade uit te voeren. De Kubernetes-versies die door uw AKS-engine worden ondersteund, kunnen worden weergegeven door de volgende opdracht uit te voeren:

    Notitie

    Voor AKSe versie 0.75.3 en hoger is aks-engine-azurestack get-versionsde opdracht om de versies van de AKS-engine op te halen.

    aks-engine get-versions --azure-env AzureStackCloud
    

    Zie Ondersteunde AKS-engineversies voor een volledige toewijzing van AKS-engine, AKS-basisinstallatiekopieën en Kubernetes-versies.

  2. Verzamel de informatie die u nodig hebt om de upgrade opdracht uit te voeren. De upgrade opdracht gebruikt de volgende parameters:

    Parameter Voorbeeld Beschrijving
    azure-env AzureStackCloud Gebruik om aan de AKS-engine aan te geven dat uw doelplatform Azure Stack Hub AzureStackCloudis.
    location lokaal De regionaam voor uw Azure Stack Hub. Voor de ASDK is de regio ingesteld op local.
    resource-group kube-rg Voer de naam van een nieuwe resourcegroep in of selecteer een bestaande resourcegroep. De resourcenaam moet alfanumeriek en kleine letters zijn.
    subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Voer uw abonnements-id in. Zie Abonneren op een aanbieding voor meer informatie
    api-model ./kubernetes-azurestack.json Pad naar het clusterconfiguratiebestand of API-model.
    client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Voer de GUID van de service-principal in. De client-id die is geïdentificeerd als de toepassings-id toen uw Azure Stack Hub-beheerder de service-principal maakte.
    clientgeheim xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Voer het geheim van de service-principal in. Dit is het clientgeheim dat u hebt ingesteld bij het maken van uw service.
    identity-system Adfs Optioneel. Geef uw oplossing voor identiteitsbeheer op als u Active Directory Federated Services (AD FS) gebruikt.
  3. Voer de volgende opdracht uit als uw waarden zijn ingesteld:

    Notitie

    Voor AKSe versie 0.75.3 en hoger is aks-engine-azurestack upgradede opdracht voor het upgraden van de AKS-engine .

    aks-engine upgrade \
    --azure-env AzureStackCloud \
    --location <for an ASDK is local> \
    --resource-group kube-rg \
    --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --api-model kube-rg/apimodel.json \
    --upgrade-version 1.18.15 \
    --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --identity-system adfs # required if using AD FS
    
  4. Als de upgradebewerking om welke reden dan ook een fout optreedt, kunt u de upgrade opdracht opnieuw uitvoeren nadat het probleem is opgelost. De AKS-engine hervat de bewerking waar deze de vorige keer is mislukt.

Stappen om alleen de installatiekopieën van het besturingssysteem bij te werken

  1. Bekijk de tabel supported-kubernetes-versions en bepaal of u de versie van aks-engine en AKS-basisinstallatiekopieën hebt die u voor uw upgrade plant. Als u versie 0.73.0 of lager van de AKS-engine gebruikt, kunt u de uitvoering van de aks-engine bekijken: aks-engine version. Als u versie 0.75.3 of hoger van de AKS-engine gebruikt, kunt u de uitvoering van de aks-engine bekijken: aks-engine-azurestack version.
  2. Upgrade uw AKS-engine dienovereenkomstig, op de computer waarop u aks-engine hebt geïnstalleerd: ./get-akse.sh --version vx.xx.xx.xx.x vervangen door uw doelversie.
  3. Vraag uw Azure Stack Hub-operator om de versie van de AKS-basisinstallatiekopieën toe te voegen die u nodig hebt in de Azure Stack Hub Marketplace die u wilt gebruiken.
  4. Voer de aks-engine upgrade opdracht uit met dezelfde versie van Kubernetes die u al gebruikt, maar voeg de --forcetoe. U ziet een voorbeeld in Een upgrade afdwingen.

Stappen voor het bijwerken van het cluster naar besturingssysteemversie Ubuntu 20.04

Met AKS-engineversie 0.75.3 en hoger kunt u uw cluster-VM's upgraden van Ubuntu 18.04 naar 20.04. Volg deze stappen:

  1. Zoek en bewerk het bestand dat tijdens de api-model.json implementatie is gegenereerd. Dit moet hetzelfde bestand zijn dat wordt gebruikt voor elke upgrade- of schaalbewerking met aks-engine. Gebruik aks-engine-azurestackin AKS Engine versie 0.75.3 en hoger.
  2. Zoek de secties voor masterProfile en agentPoolProfiles, wijzig in die secties de waarde van distro in aks-ubuntu-20.04.
  3. Sla het api-model.json bestand op en gebruik het api-model.json bestand in uw aks-engin upgrade opdracht, zoals u zou doen in stappen voor het upgraden naar een nieuwere Kubernetes-versie

Stappen voor het upgraden van het cluster als u opslagvolumes gebruikt met AKS Engine v0.70.0 en hoger

Het cloudprovider voor Azure-project (ook wel bekend als cloud-controller-manager, out-of-tree cloudprovider of externe cloudprovider) implementeert de Kubernetes-cloudproviderinterface voor Azure-clouds. De out-of-tree implementatie is de vervanging voor de afgeschafte in-tree implementatie.

Vanaf Kubernetes v1.21 in Azure Stack Hub gebruiken cloud-controller-managerclusters op basis van de AKS-engine uitsluitend . Als u een Kubernetes v1.21+-cluster wilt implementeren, moet u daarom instellen orchestratorProfile.kubernetesConfig.useCloudControllerManager op true in het API-model (voorbeeld). Met het upgradeproces van de AKS-engine wordt de useCloudControllerManager vlag automatisch bijgewerkt.

Notitie

Overwegingen bij upgraden: het proces van het upgraden van een Kubernetes-cluster van v1.20 (of lagere versie) naar v1.21 (of een hogere versie) leidt tot downtime voor workloads die afhankelijk zijn van de kubernetes.io/azure-disk in-tree volume-inrichtingsfunctie. Voordat u een upgrade uitvoert naar Kubernetes v1.21+, wordt het ten zeerste aanbevolen om een volledige back-up van de toepassingsgegevens uit te voeren en in een preproductieomgeving te valideren dat de clusteropslagresources (PV en PVC) kunnen worden gemigreerd naar de nieuwe volumeinrichting. Meer informatie over het migreren naar het Azure Disk CSI-stuurprogramma hier.

Volume-inrichtingsfuncties

De in-tree volume provisioner is alleen compatibel met de in-tree cloudprovider. Daarom moet een v1.21+-cluster een CSI-stuurprogramma (Container Storage Interface) bevatten als gebruikersworkloads afhankelijk zijn van permanente opslag. Hier vindt u een aantal oplossingen die beschikbaar zijn op Azure Stack Hub.

AKS Engine schakelt standaard geen CSI-stuurprogramma's in op Azure Stack Hub. Voor workloads waarvoor een CSI-stuurprogramma is vereist, is het mogelijk om de azuredisk-csi-driverinvoegtoepassing expliciet in te schakelen (alleen Linux-clusters) of te gebruiken Helm om de azuredisk-csi-driver grafiek te installeren (Linux- en/of Windows-clusters).

Permanente opslag migreren naar het CSI-stuurprogramma voor Azure Disk

Het proces voor het upgraden van een cluster op basis van een AKS-engine van v1.20 (of lagere versie) naar v1.21 (of een hogere versie) leidt tot downtime voor workloads die afhankelijk zijn van de kubernetes.io/azure-disk in-tree volumeinrichting, omdat deze inrichting geen deel uitmaakt van de cloudprovider voor Azure.

Als de gegevens in de onderliggende Azure-schijven behouden moeten blijven, zijn de volgende extra stappen vereist zodra het clusterupgradeproces is voltooid:

  1. Het CSI-stuurprogramma voor Azure Disk installeren
  2. De afgeschafte opslagklassen in de structuur verwijderen
  3. De permanente volumes en claims opnieuw maken

1. Azure Disk CSI-stuurprogramma handmatig installeren

Het volgende script gebruikt Helm om het CSI-stuurprogramma voor Azure Disk te installeren:

DRIVER_VERSION=v1.10.0
helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts
helm install azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver \
  --namespace kube-system \
  --set cloud=AzureStackCloud \
  --set controller.runOnMaster=true \
  --version ${DRIVER_VERSION}

2. Opslagklassen vervangen

De kube-addon-manager maakt automatisch de opslagklassen van het Azure Disk CSI-stuurprogramma (disk.csi.azure.com) zodra de in-tree-opslagklassen (kubernetes.io/azure-disk) handmatig worden verwijderd:

IN_TREE_SC="default managed-premium managed-standard"

# Delete deprecated "kubernetes.io/azure-disk" storage classes
kubectl delete storageclasses ${IN_TREE_SC}

# Wait for addon manager to create the "disk.csi.azure.com" storage class resources
kubectl get --watch storageclasses

3. Permanente volumes opnieuw maken

Zodra het CSI-stuurprogramma voor Azure Disk is geïnstalleerd en de opslagklassen zijn vervangen, bestaat de volgende stap uit het opnieuw maken van de permanente volumes (PV) en permanente volumes (PVC) met behulp van het Azure Disk CSI-stuurprogramma (of een alternatieve CSI-oplossing).

Dit is een proces met meerdere stappen dat kan verschillen, afhankelijk van hoe deze resources in eerste instantie zijn geïmplementeerd. De belangrijkste stappen zijn:

  • Verwijder de implementatie of statefulset die verwijst naar de PV + PVC-paren die moeten worden gemigreerd (back-upresourcedefinitie indien nodig).
  • Zorg ervoor dat de eigenschap van persistentVolumeReclaimPolicy de pv's is ingesteld op waarde Retain (voorbeeld).
  • Verwijder de PV + PVC-paren die moeten worden gemigreerd (back-upresourcedefinities indien nodig).
  • Als u wilt migreren, werkt u de resourcedefinitie van de pv's bij door het azureDisk object te verwijderen en een csi object toe te voegen met verwijzing naar de oorspronkelijke AzureDisk (voorbeeld).
  • Maak in de volgende volgorde de HW-resource(s), PVC-resource(s) (indien nodig) en ten slotte de implementatie of statefulset opnieuw.

Het volgende migratiescript wordt geleverd als een sjabloon.

Als de pod na het uitvoeren van het migratiescript is vastgelopen met de fout 'Kan volumes niet koppelen of koppelen', controleert u of het CSI-stuurprogramma voor azure-schijf is geïnstalleerd en of de opslagklassen opnieuw zijn gemaakt.

Een upgrade afdwingen

Er kunnen voorwaarden zijn waarin u mogelijk een upgrade van uw cluster wilt afdwingen. Op dag één implementeert u bijvoorbeeld een cluster in een niet-verbonden omgeving met behulp van de nieuwste Kubernetes-versie. De volgende dag brengt Ubuntu een patch uit voor een beveiligingsprobleem waarvoor Microsoft een nieuwe AKS-basisinstallatiekopie genereert. U kunt de nieuwe installatiekopie toepassen door een upgrade af te dwingen met dezelfde Kubernetes-versie die u al hebt geïmplementeerd.

Notitie

Voor AKSe versie 0.75.3 en hoger is aks-engine-azurestack upgradede opdracht voor het upgraden van de AKS-engine .

aks-engine upgrade \
--azure-env AzureStackCloud   
--location <for an ASDK is local> \
--resource-group kube-rg \
--subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--api-model kube-rg/apimodel.json \
--upgrade-version 1.18.15 \
--client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--force

Zie Upgrade forceren voor instructies.

Volgende stappen