Sdílet prostřednictvím


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.

  1. 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.

  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 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 localhodnotu .
    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.
  3. 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
    
  4. 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

  1. 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.
  2. 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í.
  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 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ě:

  1. 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í s aks-engine. V modulu AKS verze 0.75.3 a vyšší 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. 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-managermimo 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-managervý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:

  1. Instalace ovladače CSI disku Azure
  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 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 hodnotu Retain (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 objektu csi 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