Delen via


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

Met de AKS-engine kunt u het Kubernetes-cluster bijwerken 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 installatiekopieën van het basisbesturingssysteem 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 aks-engine upgrade opdracht gebruiken om de valuta van elk hoofd- en agentknooppunt in uw cluster te behouden.

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

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

Voor een geïmplementeerd cluster worden upgrades behandeld:

  • Kubernetes
  • Azure Stack Hub Kubernetes-provider
  • Basisbesturingssystemen

Overweeg bij het upgraden van een productiecluster 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 het 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 worden geen systeemupdates of geplande taken gepland.
  • Een gefaseerde upgrade instellen op een cluster dat precies is geconfigureerd als het productiecluster en de upgrade daar testen 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 de marketplace.

In de volgende instructies worden de minimale stappen gebruikt om de upgrade uit te voeren. Als u meer informatie wilt, raadpleegt u het artikel Kubernetes-clusters upgraden.

  1. U moet eerst de versies bepalen waarop u zich kunt richten voor de upgrade. Deze versie is afhankelijk van de versie die u momenteel hebt en gebruikt die versiewaarde om de upgrade uit te voeren. De Kubernetes-versies die door uw AKS-engine worden ondersteund, kunnen worden vermeld 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 Om aan te geven aan de AKS-engine dat uw doelplatform azure Stack Hub gebruikt AzureStackCloud.
    locatie 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 alfanumerieke 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 heeft gemaakt.
    client-secret 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 met uw waarden:

    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 waarbij deze de vorige keer is mislukt.

Stappen voor het alleen upgraden van de installatiekopieën van het besturingssysteem

  1. Bekijk de tabel ondersteunde kubernetes-versies en bepaal of u de versie van de aks-engine en de AKS-basisinstallatiekopieën hebt die u voor uw upgrade plant. Als u AKS Engine versie 0.73.0 of lager gebruikt, kunt u de versie van aks-engine uitvoeren: aks-engine version. Als u AKS Engine versie 0.75.3 of hoger gebruikt, kunt u de versie van aks-engine uitvoeren: aks-engine-azurestack version.
  2. Werk uw AKS-engine dienovereenkomstig bij op de computer waarop u aks-engine hebt geïnstalleerd: ./get-akse.sh --version vx.xx.x x.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 --forceopdracht toe. U kunt een voorbeeld zien in het afdwingen van een upgrade.

Stappen voor het bijwerken van cluster naar versie Ubuntu 20.04 van het besturingssysteem

Met AKS-engineversie 0.75.3 en hoger kunt u uw cluster-VM's upgraden van Ubuntu 18.04 naar 20.04. Volg vervolgens 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 een upgrade- of schaalbewerking met aks-engine. Gebruik in AKS Engine versie 0.75.3 en hoger aks-engine-azurestack.
  2. Zoek de secties voor masterProfile en wijzig in die secties de waarde in aks-ubuntu-20.04distro agentPoolProfiles.
  3. Sla het api-model.json bestand op en gebruik het api-model.json bestand in uw aks-engin upgrade opdracht, net zoals in de 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 Cloud Provider for Azure-project (ook wel bekend als cloud-controller-managercloudprovider buiten de structuur of externe cloudprovider) implementeert de Kubernetes-cloudproviderinterface voor Azure-clouds. De out-of-tree-implementatie is de vervanging voor de afgeschafte in-tree-implementatie.

Op Azure Stack Hub, vanaf Kubernetes v1.21, worden op AKS Engine gebaseerde clusters uitsluitend gebruikt cloud-controller-manager. Als u daarom een Kubernetes v1.21+-cluster wilt implementeren, moet u dit instellen orchestratorProfile.kubernetesConfig.useCloudControllerManager true in het API-model (voorbeeld). Het upgradeproces van de AKS-engine werkt de useCloudControllerManager vlag automatisch bij.

Notitie

Overwegingen bij de upgrade: het proces voor 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 inrichting van het volume in de kubernetes.io/azure-disk structuur. Voordat u een upgrade uitvoert naar Kubernetes v1.21+, is het raadzaam om een volledige back-up van de toepassingsgegevens uit te voeren en te valideren in een preproductieomgeving 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.

Volumeinrichtingen

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

Met de AKS-engine wordt standaard geen CSI-stuurprogramma ingeschakeld in Azure Stack Hub. Voor workloads waarvoor een CSI-stuurprogramma is vereist, is het mogelijk om de azuredisk-csi-driver invoegtoepassing (alleen Linux-clusters) expliciet in te schakelen of Helm om de azuredisk-csi-driver grafiek te installeren (Linux- en/of Windows-clusters).

Permanente opslag migreren naar het Azure Disk CSI-stuurprogramma

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

Als de gegevens op de onderliggende Azure-schijven behouden moeten blijven, zijn de volgende extra stappen vereist zodra het upgradeproces van het cluster is voltooid:

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

1. Azure Disk CSI-stuurprogramma handmatig installeren

Het volgende script gebruikt Helm om het Azure Disk CSI-stuurprogramma 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 azure Disk CSI-stuurprogrammaopslagklassen (disk.csi.azure.com) worden automatisch gemaakt 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 Stuurprogramma voor Azure Disk CSI is geïnstalleerd en de opslagklassen zijn vervangen, bestaat de volgende stap uit het opnieuw maken van de permanente volumes (PV) en claims voor permanente volumes (PVC) met behulp van het Stuurprogramma voor Azure Disk CSI (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 stappen op hoog niveau zijn:

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

Het volgende migratiescript wordt geleverd als sjabloon.

Als het migratiescript is uitgevoerd en de pod blijft hangen met de fout 'Kan volumes niet koppelen of koppelen', controleert u of het Stuurprogramma van Azure Disk CSI is geïnstalleerd en zijn opslagklassen opnieuw gemaakt.

Een upgrade afdwingen

Er zijn mogelijk voorwaarden 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 op 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 Force upgraden voor instructies.

Volgende stappen