Kurz: Upgrade Kubernetes ve službě Azure Kubernetes Service (AKS)

V rámci životního cyklu aplikace a clusteru můžete chtít upgradovat na nejnovější dostupnou verzi Kubernetes. Cluster Azure Kubernetes Service (AKS) můžete upgradovat pomocí Azure CLI, Azure PowerShell nebo Azure Portal.

V tomto kurzu, který je sedmou částí sedmidílné série, se naučíte:

  • Identifikujte aktuální a dostupné verze Kubernetes.
  • Upgradujte uzly Kubernetes.
  • Ověřte úspěšný upgrade.

Než začnete

V předchozích kurzech jste zabalili aplikaci do image kontejneru a nahráli image kontejneru do Azure Container Registry (ACR). Vytvořili jste také cluster AKS a nasadili do něj aplikaci. Pokud jste tyto kroky nedokončili a chcete postupovat podle tohoto kurzu, začněte kurzem 1: Příprava aplikace pro AKS.

  • Pokud používáte Azure CLI, tento kurz vyžaduje Azure CLI verze 2.34.1 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
  • Pokud používáte Azure PowerShell, tento kurz vyžaduje Azure PowerShell verze 5.9.0 nebo novější. Verzi zjistíte spuštěním příkazu Get-InstalledModule -Name Az. Pokud potřebujete provést instalaci nebo upgrade, přečtěte si téma Instalace Azure PowerShellu.

Získání dostupných verzí clusteru

  • Před upgradem pomocí příkazu zkontrolujte, které verze Kubernetes jsou pro váš cluster az aks get-upgrades k dispozici.

    az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
    

    Následující příklad výstupu ukazuje aktuální verzi 1.18.10 a uvádí dostupné verze v rámci upgradů.

    {
      "agentPoolProfiles": null,
      "controlPlaneProfile": {
        "kubernetesVersion": "1.18.10",
        ...
        "upgrades": [
          {
            "isPreview": null,
            "kubernetesVersion": "1.19.1"
          },
          {
            "isPreview": null,
            "kubernetesVersion": "1.19.3"
          }
        ]
      },
      ...
    }
    

Upgrade clusteru

Uzly AKS jsou pečlivě prováděny a vyprázdněny, aby se minimalizovala případná narušení spuštěných aplikací. Během tohoto procesu AKS provede následující kroky:

  • Přidá nový uzel vyrovnávací paměti (nebo tolik uzlů, kolik je nakonfigurovaných při maximálním nárůstu) do clusteru, ve kterém běží zadaná verze Kubernetes.
  • Cordony a vyprázdní jeden ze starých uzlů, aby se minimalizovalo přerušení spuštěných aplikací. Pokud používáte maximální přepětí, spustí a vyprázdní tolik uzlů najednou jako zadaný počet uzlů vyrovnávací paměti.
  • Když je starý uzel zcela vyprázdněný, znovu se přepíše, aby obdržel novou verzi, a stane se uzlem vyrovnávací paměti pro následující uzel, který se má upgradovat.
  • Tento proces se opakuje, dokud nebudou upgradovány všechny uzly v clusteru.
  • Na konci procesu se odstraní poslední uzel vyrovnávací paměti, který zachová stávající počet uzlů agenta a zůstatek zóny.

Poznámka

Pokud není zadána žádná oprava, cluster se automaticky upgraduje na nejnovější opravu GA zadané podverze. Například nastavení --kubernetes-version na 1.21 způsobí upgrade clusteru na 1.21.9.

Při upgradu pomocí podverze aliasu se podporuje pouze vyšší podverze. Například upgrade z 1.20.x na neaktivuje upgrade na nejnovější opravu GA1.20, ale upgrade na 1.21 aktivuje upgrade na nejnovější opravu GA 1.211.20.

  • Upgradujte cluster pomocí az aks upgrade příkazu .

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version KUBERNETES_VERSION
    

    Poznámka

    Najednou můžete upgradovat pouze jednu dílčí verzi. Můžete například upgradovat z verze 1.14.x na verzi 1.15.x, ale nemůžete upgradovat z verze 1.14.x na verzi 1.16.x přímo. Pokud chcete upgradovat z verze 1.14.x na verzi 1.16.x, musíte nejprve upgradovat z verze 1.14.x na verzi 1.15.x a pak provést další upgrade z verze 1.15.x na verzi 1.16.x.

    Následující příklad výstupu ukazuje výsledek upgradu na verzi 1.19.1. Všimněte si, že kubernetesVersion teď zobrazuje 1.19.1.

    {
      "agentPoolProfiles": [
        {
          "count": 3,
          "maxPods": 110,
          "name": "nodepool1",
          "osType": "Linux",
          "storageProfile": "ManagedDisks",
          "vmSize": "Standard_DS1_v2",
        }
      ],
      "dnsPrefix": "myAKSClust-myResourceGroup-19da35",
      "enableRbac": false,
      "fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io",
      "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
      "kubernetesVersion": "1.19.1",
      "location": "eastus",
      "name": "myAKSCluster",
      "type": "Microsoft.ContainerService/ManagedClusters"
    }
    

Zobrazení událostí upgradu

Poznámka

Při upgradu clusteru může na uzlech dojít k následujícím událostem Kubernetes:

  • Přepětí: Vytvořte uzel přepětí.
  • Vyprázdnění: Vyřaďte pody z uzlu. Každý pod má k dokončení vyřazení pětiminutový časový limit .
  • Aktualizace: Aktualizace uzlu proběhla úspěšně nebo selhala.
  • Odstranit: Odstraňte přepětový uzel.
  • Pomocí příkazu zobrazte události upgradu ve výchozích kubectl get events oborech názvů.

    kubectl get events 
    

    Následující příklad výstupu ukazuje některé z výše uvedených událostí uvedených během upgradu.

    ...
    default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001]
    ...
    default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool %!s(MISSING)
    ...
    

Ověření upgradu

  • Pomocí příkazu ověřte, že upgrade proběhl úspěšně az aks show .

    az aks show --resource-group myResourceGroup --name myAKSCluster --output table
    

    Následující příklad výstupu ukazuje cluster AKS, na kterém běží KubernetesVersion 1.19.1:

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.19.1               1.19.1                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

Odstranění clusteru

Vzhledem k tomu, že tento kurz je poslední částí série, možná budete chtít cluster AKS odstranit. Uzly Kubernetes běží na virtuálních počítačích Azure a dál se účtují poplatky, i když cluster nepoužíváte.

  • Pomocí příkazu odeberte skupinu prostředků, službu kontejneru az group delete a všechny související prostředky.

    az group delete --name myResourceGroup --yes --no-wait
    

Poznámka

Když odstraníte cluster, instanční objekt Azure Active Directory (Azure AD) používaný clusterem AKS se neodebere. Postup odebrání instančního objektu najdete v tématu věnovaném aspektům instančního objektu AKS a jeho odstranění. Pokud jste použili spravovanou identitu, spravuje ji platforma a nevyžaduje zřizování ani obměňování tajných kódů.

Další kroky

V tomto kurzu jste upgradovali Kubernetes v clusteru AKS. Naučili jste se:

  • Identifikujte aktuální a dostupné verze Kubernetes.
  • Upgradujte uzly Kubernetes.
  • Ověřte úspěšný upgrade.

Další informace o AKS najdete v přehledu AKS. Pokyny k vytváření úplných řešení pomocí AKS najdete v tématu Doprovodné materiály k řešení AKS.