Uppgradera ett Kubernetes-kluster med 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 den AKS-basavbildning som är associerad med den version av aks-motorn 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 Engine-versionerna 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 uppgraderingarna:
- Kubernetes
- Azure Stack Hub Kubernetes-provider
- Base OS
Tänk på följande när du uppgraderar ett produktionskluster:
- 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 din prenumeration 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
Anteckning
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 det 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:
Anteckning
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 Description azure-env AzureStackCloud För att ange för AKS-motorn att målplattformen är Azure Stack Hub använder du AzureStackCloud
.location lokalt 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 guid för tjänstens huvudnamn. 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 hemligheten för tjänstens huvudnamn. 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:
Anteckning
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 uppgraderingen 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 -kubernetes-versions som stöds och kontrollera om du har den version av aks-engine och AKS-basavbildning 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 kluster till os-version 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 kluster om du använder lagringsvolymer med AKS Engine v0.70.0 och senare
Molnprovidern för Azure-projektet (även kallat cloud-controller-manager
out-of-tree-molnleverantör eller extern molnleverantör) implementerar Kubernetes-molnprovidergränssnittet för Azure-moln. Out-of-tree-implementeringen är ersättningen för den inaktuella implementeringen i träd.
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.
Anteckning
Uppgraderingsöverväganden: Processen att uppgradera 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äkerhetskopiering 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
Volymetableren 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. Några lösningar som är tillgängliga på Azure Stack Hub visas här.
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
Processen att uppgradera 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 är en del av 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 har slutförts:
- Installera Azure Disk CSI-drivrutinen
- Ta bort de inaktuella lagringsklasserna i träd
- Återskapa beständiga volymer och anspråk
1. Installera Azure Disk CSI-drivrutinen 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 Azure Disk CSI-drivrutinslagringsklasserna (disk.csi.azure.com
) när lagringsklasserna i träd (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 viktigaste stegen är:
- Ta bort den distribution eller tillståndskänsliga uppsättning 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 (definitioner för säkerhetskopieringsresurser 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, PVC-resursen/-resurserna (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 installerades och lagringsklasserna återskapades om podden har fastnat med felet "Det går inte att ansluta eller montera volymer".
Tvinga fram 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.
Anteckning
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 Tvinga uppgradering.
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för