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 jsou podobné všem systémům IaaS. Měli byste vědět o dostupnosti nových aktualizací a k jejich použití použít modul AKS.

Upgrade clusteru

Příkaz pro upgrade aktualizuje verzi Kubernetes a image základního operačního systému. Pokaždé, když spustíte příkaz pro upgrade, modul AKS pro každý uzel clusteru vytvoří nový virtuální počítač pomocí základní image AKS přidružené k použité verzi aks-engine .

Pro modul AKS verze 0.73.0 a novější můžete pomocí aks-engine upgrade příkazu udržovat měnu každého hlavního uzlu a agenta v clusteru.

V případě modulu AKS verze 0.75.3 a novějších můžete pomocí aks-engine-azurestack upgrade příkazu udržovat měnu každého hlavního uzlu a uzlu agenta v 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 upgrady zahrnují:

  • Kubernetes
  • Poskytovatel Kubernetes ve službě Azure Stack Hub
  • Základní operační systém

Při upgradu produkčního clusteru zvažte následující:

  • Používáte správnou specifikaci clusteru (apimodel.json) a skupinu prostředků pro cílový cluster?
  • Používáte pro klientský počítač spolehlivý počítač pro spuštění modulu AKS, 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 počet síťových směrování a potenciálních 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.
  • Neplánují se žádné aktualizace systému ani naplánované úlohy.
  • Nastavte fázovaný upgrade v clusteru, který je nakonfigurovaný přesně jako produkční cluster, a otestujte upgrade tam předtím, než to uděláte 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 aks-engine a image je k dispozici na marketplace.

Následující pokyny používají minimální kroky k provedení upgradu. Další podrobnosti najdete v článku Upgrade clusterů Kubernetes.

  1. Nejprve musíte určit verze, na které můžete pro upgrade cílit. Tato verze závisí na verzi, kterou aktuálně máte, a pak tuto hodnotu verze použije k provedení upgradu. Verze Kubernetes podporované vaším modulem AKS je možné vypsat spuštěním následujícího příkazu:

    Poznámka

    Pro AKSe verze 0.75.3 a vyšší je aks-engine-azurestack get-versionspříkaz pro získání verzí modulu AKS .

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

    Kompletní mapování modulu AKS, základní image AKS a verzí Kubernetes najdete v tématu Podporované verze modulu AKS.

  2. Shromážděte informace, které budete potřebovat ke spuštění upgrade příkazu. Příkaz upgrade používá následující parametry:

    Parametr Příklad Description
    azure-env AzureStackCloud Pokud chcete modulu AKS označit, že vaší cílovou platformou je Azure Stack Hub, použijte AzureStackCloud.
    location local Název oblasti pro službu Azure Stack Hub. U sady ASDK je oblast nastavená na local.
    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 modelu rozhraní API
    client-ID 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.
    tajný klíč klienta xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte tajný kód instančního objektu. Toto je tajný klíč klienta, který jste nastavili při vytváření služby.
    identity-system Adfs Nepovinný parametr. Pokud používáte službu Active Directory Federated Services (AD FS), zadejte řešení správy identit.
  3. Se svými hodnotami spusťte následující příkaz:

    Poznámka

    Pro AKSe verze 0.75.3 a vyšší je aks-engine-azurestack upgradepříkaz pro upgrade modulu AKS .

    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. Pokud z nějakého důvodu dojde k selhání operace upgradu, můžete po vyřešení problému spustit příkaz znovu upgrade . Modul AKS obnoví operaci, ve které předtím selhala.

Postup upgradu pouze image operačního systému

  1. Projděte si tabulku supported-kubernetes-versions a zjistěte, jestli máte verzi aks-engine a základní image AKS, kterou plánujete pro upgrade. Pokud používáte modul AKS verze 0.73.0 nebo novější, zobrazíte verzi aks-engine run: aks-engine version. Pokud používáte modul AKS verze 0.75.3 nebo vyšší, chcete-li zobrazit verzi modulu aks-engine, spusťte: aks-engine-azurestack version.
  2. Odpovídajícím způsobem upgradujte modul AKS na počítači, na kterém jste nainstalovali aks-engine run: ./get-akse.sh --version vx.xx.x nahraďte x.xx.x cílovou verzí.
  3. 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.
  4. aks-engine upgrade Spusťte příkaz pomocí stejné verze Kubernetes, kterou už používáte, ale přidejte --force. Příklad najdete v tématu Vynucení upgradu.

Postup aktualizace clusteru na verzi operačního systému Ubuntu 20.04

S modulem AKS verze 0.75.3 a vyšší můžete upgradovat virtuální počítače clusteru z Ubuntu 18.04 na verzi 20.04. Postupujte takto:

  1. Vyhledejte a upravte api-model.json soubor, který se vygeneroval během nasazení. Měl by se jednat o stejný soubor, který se používá pro všechny operace upgradu nebo škálování pomocí aks-enginenástroje . V modulu AKS verze 0.75.3 a novější použijte aks-engine-azurestack.
  2. Vyhledejte oddíly pro masterProfile a , agentPoolProfilesv těchto oddílech změňte hodnotu distro na aks-ubuntu-20.04.
  3. api-model.json Uložte soubor a použijte ho api-model.json v aks-engin upgrade příkazu stejně jako v postupu upgradu na novější verzi Kubernetes.

Postup upgradu clusteru, pokud používáte svazky úložiště s modulem AKS verze 0.70.0 nebo novější

Projekt Cloud Provider pro Azure (označovaný také jako cloud-controller-managermimo stromový poskytovatel cloudu nebo externí poskytovatel cloudu) implementuje rozhraní poskytovatele cloudu Kubernetes pro cloudy Azure. Implementace mimo strom nahrazuje zastaralou implementaci in-tree.

Ve službě Azure Stack Hub budou clustery založené na modulu AKS od Kubernetes verze 1.21 používat cloud-controller-managervýhradně . Pokud tedy chcete nasadit cluster Kubernetes verze 1.21 nebo novější, musíte ho v modelu rozhraní API nastavit orchestratorProfile.kubernetesConfig.useCloudControllerManager na true (příklad). Proces upgradu modulu AKS automaticky aktualizuje useCloudControllerManager příznak.

Poznámka

Důležité informace o upgradu: Proces upgradu clusteru Kubernetes z verze 1.20 (nebo nižší verze) na verzi 1.21 (nebo vyšší) způsobí výpadky úloh, které se spoléhají na kubernetes.io/azure-disk zřizovací nástroj svazků ve struktuře. Před upgradem na Kubernetes verze 1.21 a novější důrazně doporučujeme provést úplné zálohování dat aplikace a ověřit v předprodukčním prostředí , že prostředky úložiště clusteru (PV a PVC) je možné migrovat do nového zřizovateče svazků. Tady se dozvíte, jak migrovat na ovladač CsI disku Azure.

Zřizovací služby svazků

Nástroj pro zřizování svazků ve stromové struktuře je kompatibilní pouze s poskytovatelem cloudu ve stromové struktuře. Cluster verze 1.21+ proto musí obsahovat ovladač rozhraní CSI (Container Storage Interface), pokud uživatelské úlohy spoléhají na trvalé úložiště. Tady je uvedeno 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-driverdoplněk (clustery jen s Linuxem), nebo použít Helm k instalaci azuredisk-csi-driver grafu (clustery s Linuxem nebo Windows).

Migrace trvalého úložiště na ovladač CsI disku Azure

Proces upgradu clusteru založeného na modulu AKS z verze 1.20 (nebo nižší verze) na verzi 1.21 (nebo vyšší) způsobí výpadky úloh, které se spoléhají na kubernetes.io/azure-disk nástroj pro zřizování svazků ve stromové struktuře, protože tento zřizovací proces není součástí poskytovatele cloudových služeb pro Azure.

Pokud by se měla zachovat data uložená na podkladových discích Azure, po dokončení procesu upgradu clusteru se vyžadují následující dodatečné kroky:

  1. Instalace ovladače Azure Disk CSI
  2. Odebrání zastaralých tříd úložiště ve stromové struktuře
  3. Opětovné vytvoření trvalých svazků a deklarací identity

1. Ruční instalace ovladače Azure Disk CSI

Následující skript používá Helm k instalaci ovladače Azure Disk CSI:

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říd úložiště ve stromové struktuře (kubernetes.io/azure-disk) automaticky vytvoří třídy úložištědisk.csi.azure.com ovladače 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 deklarací identity svazků (PVC) pomocí ovladače Azure Disk CSI (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. Kroky na nejvyšší úrovni jsou:

  • Odstraňte nasazení nebo stavovou sadu, která odkazuje na páry PV a PVC, které se mají migrovat (v případě potřeby definice prostředku zálohování).
  • Ujistěte se, že je vlastnost osobních persistentVolumeReclaimPolicy počítačů nastavená na hodnotu Retain (příklad).
  • Odstraňte páry PV a PVC, které se mají migrovat (v případě potřeby definice prostředků zálohujte).
  • Pokud chcete provést migraci, aktualizujte definici prostředku virtuálních počítačů odebráním objektu azureDisk a přidáním objektu csi s odkazem na původní AzureDisk (příklad).
  • V následujícím pořadí znovu vytvořte prostředek/prostředky pv, 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 je nainstalovaný ovladač CsI disku Azure a znovu se vytvořily třídy úložiště.

Vynucení upgradu

Možná budete chtít vynutit upgrade clusteru za podmínek. Například v první den nasadíte cluster v odpojené prostředí pomocí nejnovější verze Kubernetes. Následující den Ubuntu vydává 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 aks-engine-azurestack upgradepříkaz pro upgrade modulu AKS .

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