Uppgradera ett Kubernetes-kluster med hjälp av AKS-motorn på Azure Stack Hub
Med AKS-motorn kan du uppgradera Kubernetes-klustret som ursprungligen distribuerades med hjälp av verktyget på Azure Stack Hub. Du kan underhålla klustren med hjälp av AKS-motorn. Dina underhållsaktiviteter liknar alla IaaS-system. Du bör vara medveten om tillgängligheten för nya uppdateringar och använda AKS-motorn för att tillämpa dem.
Uppgradera ett kluster
Uppgraderingskommandot uppdaterar Kubernetes-versionen och bas-OS-avbildningen. Varje gång du kör uppgraderingskommandot skapar AKS-motorn för varje nod i klustret en ny virtuell dator med hjälp av AKS-basavbildningen som är associerad med versionen av aks-engine som används.
För AKS Engine-versionerna 0.73.0 och senare kan du använda aks-engine upgrade
kommandot för att underhålla valutan för varje huvud- och agentnod i klustret.
För AKS-motorversionerna 0.75.3 och senare kan du använda aks-engine-azurestack upgrade
kommandot för att underhålla valutan för varje huvud- och agentnod i klustret.
Microsoft hanterar inte klustret. Men Microsoft tillhandahåller verktyget och vm-avbildningen som du kan använda för att hantera klustret.
För ett distribuerat kluster omfattar uppgraderingar:
- Kubernetes
- Azure Stack Hub Kubernetes-provider
- Basoperativsystem
När du uppgraderar ett produktionskluster bör du tänka på:
- Använder du rätt klusterspecifikation (
apimodel.json
) och resursgrupp för målklustret? - Använder du en tillförlitlig dator för klientdatorn för att köra AKS-motorn och från vilken du utför uppgraderingsåtgärder?
- Kontrollera att du har ett säkerhetskopieringskluster och att det fungerar.
- Om möjligt kör du kommandot från en virtuell dator i Azure Stack Hub-miljön för att minska nätverkshoppen och potentiella anslutningsfel.
- Kontrollera att prenumerationen har tillräckligt med utrymme för hela processen. Processen allokerar nya virtuella datorer under processen.
- Inga systemuppdateringar eller schemalagda aktiviteter planeras.
- Konfigurera en stegvis uppgradering på ett kluster som är konfigurerat exakt som produktionsklustret och testa uppgraderingen där innan du gör det i ditt produktionskluster
Steg för att uppgradera till en nyare Kubernetes-version
Kommentar
AKS-basavbildningen uppgraderas också om du använder en nyare version av aks-motorn och avbildningen är tillgänglig på Marketplace.
Följande instruktioner använder de minsta stegen för att utföra uppgraderingen. Mer information finns i artikeln Uppgradera Kubernetes-kluster.
Du måste först fastställa vilka versioner du kan rikta in dig på för uppgraderingen. Den här versionen beror på vilken version du har för närvarande och använder sedan versionsvärdet för att utföra uppgraderingen. Kubernetes-versionerna som stöds av AKS-motorn kan visas genom att köra följande kommando:
Kommentar
För AKSe version 0.75.3 och senare är
aks-engine-azurestack get-versions
kommandot för att hämta versionerna av AKS-motorn .aks-engine get-versions --azure-env AzureStackCloud
En fullständig mappning av AKS-motorn, AKS-basavbildningen och Kubernetes-versioner finns i AKS-motorversioner som stöds.
Samla in den information som du behöver för att köra
upgrade
kommandot. Kommandotupgrade
använder följande parametrar:Parameter Exempel beskrivning azure-env AzureStackCloud Om du vill ange för AKS-motorn att målplattformen är Azure Stack Hub använder du AzureStackCloud
.plats lokal Regionnamnet för din Azure Stack Hub. För ASDK är regionen inställd på local
.resource-group kube-rg Ange namnet på en ny resursgrupp eller välj en befintlig resursgrupp. Resursnamnet måste vara alfanumeriskt och gemener. prenumerations-ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Ange ditt prenumerations-ID. Mer information finns i Prenumerera på ett erbjudande api-modell ./kubernetes-azurestack.json Sökväg till klusterkonfigurationsfilen eller API-modellen. klient-ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Ange tjänstens huvudnamns-GUID. Klient-ID:t identifierades som program-ID när Azure Stack Hub-administratören skapade tjänstens huvudnamn. klienthemlighet xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Ange tjänstens huvudnamnshemlighet. Det här är den klienthemlighet som du konfigurerade när du skapade tjänsten. identitetssystem adfs Valfritt. Ange din identitetshanteringslösning om du använder Active Directory Federated Services (AD FS). Kör följande kommando med dina värden på plats:
Kommentar
För AKSe version 0.75.3 och senare är
aks-engine-azurestack upgrade
kommandot för att uppgradera AKS-motorn .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
Om uppgraderingsåtgärden av någon anledning stöter på ett fel kan du köra
upgrade
kommandot igen när du har åtgärdat problemet. AKS-motorn återupptar åtgärden där den misslyckades föregående gång.
Steg för att endast uppgradera OS-avbildningen
- Granska tabellen med stöd för kubernetes-versions och kontrollera om du har den version av aks-motorn och AKS-basavbildningen som du planerar för uppgraderingen. Om du använder AKS Engine version 0.73.0 eller senare kan du visa versionen av aks-engine run:
aks-engine version
. Om du använder AKS Engine version 0.75.3 eller senare kan du visa versionen av aks-engine run:aks-engine-azurestack version
. - Uppgradera AKS-motorn på den dator där du har installerat aks-engine run:
./get-akse.sh --version vx.xx.x
ersätt x.xx.x med din målversion. - Be din Azure Stack Hub-operatör att lägga till den version av AKS-basavbildningen som du behöver på Azure Stack Hub Marketplace som du planerar att använda.
aks-engine upgrade
Kör kommandot med samma version av Kubernetes som du redan använder, men lägg till--force
. Du kan se ett exempel i Tvinga en uppgradering.
Steg för att uppdatera klustret till os-versionen Ubuntu 20.04
Med AKS-motorn version 0.75.3 och senare kan du uppgradera dina virtuella klusterdatorer från Ubuntu 18.04 till 20.04. Följ de här stegen:
- Leta upp och redigera
api-model.json
filen som genererades under distributionen. Detta bör vara samma fil som används för alla uppgraderings- eller skalningsåtgärder medaks-engine
. I AKS Engine version 0.75.3 och senare använder duaks-engine-azurestack
. - Leta upp avsnitten för
masterProfile
ochagentPoolProfiles
i dessa avsnitt ändra värdetdistro
för tillaks-ubuntu-20.04
. api-model.json
Spara filen och användapi-model.json
filen i kommandotaks-engin upgrade
som i stegen för att uppgradera till en nyare Kubernetes-version
Steg för att uppgradera klustret om du använder lagringsvolymer med AKS Engine v0.70.0 och senare
Cloud Provider for Azure-projektet (även kallat cloud-controller-manager
, out-of-tree-molnleverantör eller extern molnleverantör) implementerar Kubernetes-molnprovidergränssnittet för Azure-moln. Implementeringen av out-of-tree är ersättningen för den inaktuella implementeringen i trädet.
På Azure Stack Hub, från Kubernetes v1.21, använder cloud-controller-manager
AKS Engine-baserade kluster exklusivt . För att distribuera ett Kubernetes v1.21+-kluster måste det därför anges orchestratorProfile.kubernetesConfig.useCloudControllerManager
till true
i API-modellen (exempel). AKS-motorns uppgraderingsprocess uppdaterar useCloudControllerManager
automatiskt flaggan.
Kommentar
Uppgraderingsöverväganden: Uppgraderingen av ett Kubernetes-kluster från v1.20 (eller lägre version) till v1.21 (eller senare version) orsakar stilleståndstid för arbetsbelastningar som förlitar sig på kubernetes.io/azure-disk
volymetableren i träd. Innan du uppgraderar till Kubernetes v1.21+ rekommenderar vi starkt att du utför en fullständig säkerhetskopia av programdata och verifierar i en förproduktionsmiljö att klusterlagringsresurserna (PV och PVC) kan migreras till en ny volymetabler. Lär dig hur du migrerar till Azure Disk CSI-drivrutinen här.
Volymetabler
Volymetabler i träd är endast kompatibel med molnleverantören i träd. Därför måste ett v1.21+-kluster innehålla en CSI-drivrutin (Container Storage Interface) om användararbetsbelastningar förlitar sig på beständig lagring. Här visas några lösningar som är tillgängliga på Azure Stack Hub.
AKS-motorn aktiverar inte någon CSI-drivrutin som standard på Azure Stack Hub. För arbetsbelastningar som kräver en CSI-drivrutin är det möjligt att antingen uttryckligen azuredisk-csi-driver
aktivera tillägget (endast Linux-kluster) eller använda Helm
för att installera azuredisk-csi-driver
diagrammet (Linux- och/eller Windows-kluster).
Migrera beständig lagring till Azure Disk CSI-drivrutinen
Uppgraderingen av ett AKS Engine-baserat kluster från v1.20 (eller lägre version) till v1.21 (eller senare version) orsakar stilleståndstid för arbetsbelastningar som förlitar sig på kubernetes.io/azure-disk
volymetableren i träd eftersom den här etableringen inte ingår i molnleverantören för Azure.
Om data som sparas på de underliggande Azure-diskarna ska bevaras krävs följande extra steg när klusteruppgraderingsprocessen är klar:
- Installera Azure Disk CSI-drivrutinen
- Ta bort de inaktuella lagringsklasserna i träd
- Återskapa beständiga volymer och anspråk
1. Installera CSI-drivrutinen för Azure Disk manuellt
Följande skript använder Helm
för att installera Azure Disk CSI-drivrutinen:
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. Ersätt lagringsklasser
kube-addon-manager
Skapar automatiskt Lagringsklasserna för Azure Disk CSI-drivrutinen (disk.csi.azure.com
) när lagringsklasserna i trädet (kubernetes.io/azure-disk
) tas bort manuellt:
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. Återskapa beständiga volymer
När Azure Disk CSI-drivrutinen har installerats och lagringsklasserna har ersatts är nästa steg att återskapa beständiga volymer (PV) och beständiga volymanspråk (PVC) med hjälp av Azure Disk CSI-drivrutinen (eller en alternativ CSI-lösning).
Det här är en process i flera steg som kan skilja sig beroende på hur dessa resurser ursprungligen distribuerades. De övergripande stegen är:
- Ta bort distributionen eller statefulset som refererar till PV + PVC-paren som ska migreras (definition av säkerhetskopieringsresurs om det behövs).
- Kontrollera att PV:ernas
persistentVolumeReclaimPolicy
egenskap är inställd på värdeRetain
(exempel). - Ta bort PV + PVC-paren som ska migreras (säkerhetskopior av resursdefinitioner om det behövs).
- Om du vill migrera uppdaterar du PV:ernas resursdefinition genom att ta bort
azureDisk
objektet och lägga till ettcsi
objekt med referens till den ursprungliga AzureDisk (exempel). - Återskapa, i följande ordning, PV-resursen/S:erna, PVC-resursen/s (om det behövs) och slutligen distributionen eller tillståndskänsliga datamängden.
Följande migreringsskript tillhandahålls som en mall.
När du har kört migreringsskriptet kontrollerar du att Azure Disk CSI-drivrutinen har installerats och att lagringsklasserna har återskapats om podden har fastnat med felet "Det går inte att ansluta eller montera volymer".
Framtvinga en uppgradering
Det kan finnas villkor där du kanske vill framtvinga en uppgradering av klustret. Dag ett distribuerar du till exempel ett kluster i en frånkopplad miljö med den senaste Kubernetes-versionen. Följande dag släpper Ubuntu en korrigering av en säkerhetsrisk som Microsoft genererar en ny AKS-basavbildning för. Du kan använda den nya avbildningen genom att tvinga fram en uppgradering med samma Kubernetes-version som du redan har distribuerat.
Kommentar
För AKSe version 0.75.3 och senare är aks-engine-azurestack upgrade
kommandot för att uppgradera AKS-motorn .
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
Anvisningar finns i Framtvinga uppgradering.