Upgrade clusteru Kubernetes pomocí modulu AKS ve službě Azure Stack Hub
Modul AKS umožňuje upgradovat cluster Kubernetes, který byl původně nasazen pomocí nástroje ve službě Azure Stack Hub. Clustery můžete udržovat pomocí modulu AKS. Vaše úlohy údržby se podobají jakémukoli systému IaaS. Měli byste vědět o dostupnosti nových aktualizací a použití modulu AKS k jejich použití.
Upgrade clusteru
Příkaz upgrade aktualizuje verzi Kubernetes a základní image operačního systému. Pokaždé, když spustíte příkaz pro upgrade pro každý uzel clusteru, vytvoří modul AKS nový virtuální počítač pomocí základní image AKS přidružené k verzi použitého modulu aks.
Pro modul AKS verze 0.73.0 a níže můžete pomocí aks-engine upgrade
příkazu udržovat měnu každého hlavního a agenta uzlu v clusteru.
Pro modul AKS verze 0.75.3 a vyšší můžete pomocí aks-engine-azurestack upgrade
příkazu udržovat měnu každého hlavního a agenta uzlu ve vašem clusteru.
Microsoft váš cluster nespravuje. Microsoft ale poskytuje nástroj a image virtuálního počítače, které můžete použít ke správě clusteru.
U nasazeného clusteru se upgrady týkají:
- Kubernetes
- Poskytovatel Kubernetes služby Azure Stack Hub
- Základní operační systém
Při upgradu produkčního clusteru zvažte následující:
- Používáte pro cílový cluster správnou specifikaci clusteru (
apimodel.json
) a skupinu prostředků? - Používáte pro klientský počítač spolehlivý počítač ke spuštění modulu AKS a ze kterého provádíte operace upgradu?
- Ujistěte se, že máte záložní cluster a že je funkční.
- Pokud je to možné, spusťte příkaz z virtuálního počítače v prostředí služby Azure Stack Hub, abyste snížili segmenty směrování sítě a potenciální selhání připojení.
- Ujistěte se, že vaše předplatné má dostatek místa pro celý proces. Proces během procesu přiděluje nové virtuální počítače.
- Nejsou naplánovány žádné aktualizace systému ani naplánované úkoly.
- Nastavte fázovaný upgrade v clusteru, který je nakonfigurovaný přesně jako produkční cluster, a před tím otestujte upgrade v produkčním clusteru.
Postup upgradu na novější verzi Kubernetes
Poznámka:
Základní image AKS se také upgraduje, pokud používáte novější verzi modulu aks a image je k dispozici na marketplace.
Následující pokyny k provedení upgradu používají minimální kroky. Další podrobnosti najdete v článku Upgrade clusterů Kubernetes.
Nejprve je potřeba určit verze, na které můžete cílit pro upgrade. Tato verze závisí na verzi, kterou aktuálně máte, a pak tuto hodnotu verze použijte k provedení upgradu. Verze Kubernetes podporované modulem AKS můžou být uvedené spuštěním následujícího příkazu:
Poznámka:
Pro AKSe verze 0.75.3 a vyšší je příkaz pro získání verzí modulu AKS .
aks-engine-azurestack get-versions
aks-engine get-versions --azure-env AzureStackCloud
Úplné mapování modulu AKS, základní image AKS a verzí Kubernetes najdete v tématu Podporované verze modulu AKS.
Shromážděte informace, které budete potřebovat ke spuštění
upgrade
příkazu. Příkazupgrade
používá následující parametry:Parametr Příklad Popis azure-env AzureStackCloud Pokud chcete označit modul AKS, že vaše cílová platforma je azure Stack Hub, použijte AzureStackCloud
.location local Název oblasti pro službu Azure Stack Hub. U sady ASDK je oblast nastavena na local
hodnotu .resource-group kube-rg Zadejte název nové skupiny prostředků nebo vyberte existující skupinu prostředků. Název prostředku musí být alfanumerický a malými písmeny. id předplatného xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte ID předplatného. Další informace najdete v tématu Přihlášení k odběru nabídky. api-model ./kubernetes-azurestack.json Cesta ke konfiguračnímu souboru clusteru nebo k modelu rozhraní API id klienta xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte identifikátor GUID instančního objektu. ID klienta identifikované jako ID aplikace, když správce služby Azure Stack Hub vytvořil instanční objekt. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte tajný klíč instančního objektu. Toto je tajný klíč klienta, který jste nastavili při vytváření služby. identity-system adfs Nepovinné. Pokud používáte službu AD FS (Active Directory Federated Services), zadejte řešení správy identit. S vašimi hodnotami spusťte následující příkaz:
Poznámka:
Pro AKSe verze 0.75.3 a vyšší je příkaz pro upgrade modulu AKS .
aks-engine-azurestack upgrade
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
Pokud z nějakého důvodu dojde k selhání operace upgradu, můžete po vyřešení problému příkaz spustit
upgrade
znovu. Modul AKS obnoví operaci, ve které selhala v předchozím čase.
Postup pouze upgradu image operačního systému
- Projděte si tabulku podporovaných verzí Kubernetes a zjistěte, jestli máte verzi modulu aks a základní image AKS, kterou plánujete upgradovat. Pokud používáte modul AKS verze 0.73.0 nebo novější, zobrazí se verze modulu aks-engine:
aks-engine version
. Pokud používáte modul AKS verze 0.75.3 nebo vyšší, zobrazí se verze modulu aks-engine:aks-engine-azurestack version
. - Odpovídajícím způsobem upgradujte modul AKS na počítači, na kterém jste nainstalovali spuštění modulu aks:
./get-akse.sh --version vx.xx.x
nahraďte x.xx.x cílovou verzí. - Požádejte operátora služby Azure Stack Hub, aby přidal verzi základní image AKS, kterou potřebujete na marketplace služby Azure Stack Hub, kterou plánujete použít.
aks-engine upgrade
Spusťte příkaz pomocí stejné verze Kubernetes, kterou už používáte, ale přidejte--force
. Příklad můžete vidět v vynucení upgradu.
Postup aktualizace clusteru na operační systém Ubuntu 20.04
S modulem AKS verze 0.75.3 a novějším můžete upgradovat virtuální počítače clusteru z Ubuntu 18.04 na verzi 20.04. Postupujte následovně:
- Vyhledejte a upravte
api-model.json
soubor vygenerovaný během nasazování. To by měl být stejný soubor, který se používá pro všechny operace upgradu nebo škálování saks-engine
. V modulu AKS verze 0.75.3 a vyšší použijteaks-engine-azurestack
. - Vyhledejte oddíly pro
masterProfile
aagentPoolProfiles
v těchto oddílech změňte hodnotudistro
naaks-ubuntu-20.04
. - Uložte soubor a použijte ho
api-model.json
api-model.json
v příkazu stejněaks-engin upgrade
jako v krocích k upgradu na novější verzi Kubernetes.
Postup upgradu clusteru, pokud používáte svazky úložiště s modulem AKS v0.70.0 a novějším
Poskytovatel cloudu pro projekt Azure (označovaný také jako cloud-controller-manager
mimo stromový poskytovatel cloudu nebo externí poskytovatel cloudu) implementuje rozhraní poskytovatele cloudu Kubernetes pro cloudy Azure. Implementace mimo strom je náhradou za zastaralou implementaci ve stromu.
Ve službě Azure Stack Hub od Kubernetes verze 1.21 budou clustery založené na modulu AKS používat cloud-controller-manager
výhradně . Proto je potřeba nasadit cluster Kubernetes verze 1.21 nebo novější, který je potřeba nastavit orchestratorProfile.kubernetesConfig.useCloudControllerManager
v true
modelu rozhraní API (příklad). Proces upgradu modulu AKS automaticky aktualizuje useCloudControllerManager
příznak.
Poznámka:
Aspekty upgradu: Proces upgradu clusteru Kubernetes z verze 1.20 (nebo nižší verze) na verzi 1.21 (nebo vyšší) způsobí výpadek úloh závislých na zřizovacím kubernetes.io/azure-disk
modulu svazku ve stromu. Před upgradem na Kubernetes verze 1.21 nebo novější se důrazně doporučuje provést úplnou zálohu dat aplikace a ověřit v předprodukčním prostředí , že je možné prostředky úložiště clusteru (PV a PVC) migrovat do nového zřizovacího procesu svazku. Tady se dozvíte, jak migrovat na ovladač CSI disku Azure.
Zřizovací služby svazků
Zřizování svazků ve stromu je kompatibilní pouze s poskytovatelem cloudu ve stromu. Cluster verze 1.21+ proto musí obsahovat ovladač rozhraní pro úložiště kontejnerů (CSI), pokud uživatelské úlohy spoléhají na trvalé úložiště. Tady je několik řešení dostupných ve službě Azure Stack Hub.
Modul AKS ve výchozím nastavení ve službě Azure Stack Hub nepovolí žádný ovladač CSI. U úloh, které vyžadují ovladač CSI, je možné buď explicitně povolit azuredisk-csi-driver
doplněk (pouze clustery s Linuxem), nebo použít Helm
k instalaci azuredisk-csi-driver
grafu (clusterů s Linuxem nebo Windows).
Migrace trvalého úložiště na ovladač CSI disku Azure
Proces upgradu clusteru založeného na stroji AKS z verze 1.20 (nebo nižší verze) na verzi 1.21 (nebo vyšší) způsobí výpadek úloh závislých na kubernetes.io/azure-disk
zřizovacím modulu ve stromu, protože tento zřizovací proces není součástí poskytovatele cloudu pro Azure.
Pokud by se data trvalá na podkladových discích Azure zachovala, po dokončení procesu upgradu clusteru se vyžadují následující další kroky:
- Instalace ovladače CSI disku Azure
- Odebrání zastaralých tříd úložiště ve stromové struktuře
- Opětovné vytvoření trvalých svazků a deklarací identity
1. Ruční instalace ovladače CSI disku Azure
Následující skript používá Helm
k instalaci ovladače CSI disku Azure:
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. Nahrazení tříd úložiště
Po kube-addon-manager
ručním odstranění třídkubernetes.io/azure-disk
úložiště v rámci stromové struktury se automaticky vytvoří třídydisk.csi.azure.com
úložiště ovladačů CsI disku Azure ():
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. Opětovné vytvoření trvalých svazků
Po instalaci ovladače CSI disku Azure a nahrazení tříd úložiště je dalším krokem opětovné vytvoření trvalých svazků (PV) a trvalých svazků (PVC) pomocí ovladače CsI disku Azure (nebo alternativního řešení CSI).
Jedná se o vícekrokový proces, který se může lišit v závislosti na tom, jak byly tyto prostředky původně nasazeny. Základní kroky jsou:
- Odstraňte nasazení nebo stavovou sadu, která odkazuje na páry PV + PVC k migraci (v případě potřeby definice záložního prostředku).
- Ujistěte se, že
persistentVolumeReclaimPolicy
je vlastnost virtuálních počítačů nastavená na hodnotuRetain
(příklad). - Odstraňte páry PV + PVC, které chcete migrovat (v případě potřeby zálohovat definice prostředků).
- Pokud chcete provést migraci, aktualizujte definici prostředku virtuálních počítačů odebráním objektu
azureDisk
a přidáním objektucsi
s odkazem na původní disk AzureDisk (příklad). - Znovu vytvořte v následujícím pořadí prostředky PV/s, prostředky PVC nebo prostředky PVC (v případě potřeby) a nakonec nasazení nebo stavovou sadu.
Následující skript migrace je k dispozici jako šablona.
Pokud se po spuštění skriptu migrace zablokuje pod s chybou Nejde připojit nebo připojit svazky, ujistěte se, že byl nainstalovaný ovladač CSI disku Azure a znovu se vytvořily třídy úložiště.
Vynucení upgradu
Může se stát, že budete chtít vynutit upgrade clusteru. Například v den, kdy nasadíte cluster v odpojeném prostředí pomocí nejnovější verze Kubernetes. Následující den Ubuntu vydá opravu chyby zabezpečení, pro kterou Microsoft vygeneruje novou základní image AKS. Novou image můžete použít vynucením upgradu pomocí stejné verze Kubernetes, kterou jste už nasadili.
Poznámka:
Pro AKSe verze 0.75.3 a vyšší je příkaz pro upgrade modulu AKS .aks-engine-azurestack upgrade
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
Pokyny najdete v tématu Vynucení upgradu.
Další kroky
- Přečtěte si o modulu AKS ve službě Azure Stack Hub
- Škálování clusteru Kubernetes ve službě Azure Stack Hub pomocí modulu AKS