Sdílet prostřednictvím


Automatické zastavení upgradů clusteru Azure Kubernetes Service (AKS) u zásadních změn rozhraní API

V tomto článku se dozvíte, jak zastavit automatické upgrady clusteru Azure Kubernetes Service (AKS) u zásadních změn rozhraní API.

Přehled

Pokud chcete zůstat v podporované verzi Kubernetes, musíte cluster upgradovat alespoň jednou za rok a připravit se na všechny možné přerušení. Mezi tyto přerušení patří ty, které způsobují zásadní změny rozhraní API, vyřazení a závislosti, jako je Helm a Rozhraní služby Container Storage Interface (CSI). Může být obtížné předvídat tyto přerušení a migrovat kritické úlohy, aniž by došlo k výpadkům.

Cluster AKS můžete nakonfigurovat tak, aby automaticky zastavil operace upgradu, které se skládají ze změny podverze, pomocí zastaralých rozhraní API a upozorňovaly vás na problém. Tato funkce vám pomůže vyhnout se neočekávaným přerušením a před pokračováním v upgradu můžete řešit zastaralá rozhraní API.

Než začnete

Než začnete, ujistěte se, že splňujete následující požadavky:

  • Operace upgradu je změna podverze Kubernetes pro řídicí rovinu clusteru.
  • Verze Kubernetes, na kterou upgradujete, je 1.26 nebo novější.
  • K poslednímu použití zastaralých rozhraní API pro cílovou verzi, na kterou upgradujete, musí do 12 hodin před operací upgradu dojít. AKS zaznamenává využití každou hodinu, takže jakékoli využití zastaralých rozhraní API během jedné hodiny není zaručeno, že se v detekci objeví.

Zmírnění zastavených operací upgradu

Pokud splňujete požadavky, pokuste se o upgrade a zobrazí se chybová zpráva podobná následující ukázkové chybové zprávě:

Bad Request({
  "code": "ValidationError",
  "message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
  "subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})

Máte dvě možnosti, jak tento problém zmírnit: můžete odebrat použití zastaralých rozhraní API (doporučeno) nebo obejít ověření a ignorovat změny rozhraní API.

  1. Na webu Azure Portal přejděte k prostředku clusteru a vyberte Diagnostikovat a řešit problémy.

  2. Vyberte Vytvoření, upgrade, odstranění a škálování>vyřazení rozhraní API Kubernetes.

    Snímek obrazovky webu Azure Portal zobrazující část Vyřazení vybraného rozhraní Kubernetes API

  3. Počkejte 12 hodin od doby, kdy se zobrazilo poslední zastaralé využití rozhraní API. Zkontrolujte operaci v zastaralém využití rozhraní API a zjistěte, jestli se jedná o hodinky. Pokud se jedná o hodinky, můžete počkat, až využití klesne na nulu. (Můžete také zkontrolovat minulé využití rozhraní API povolením Přehledy kontejnerů a zkoumání protokolů auditu kube.)

  4. Zkuste upgrade clusteru zopakovat.

Obejít ověření a ignorovat změny rozhraní API

Poznámka:

Tato metoda vyžaduje použití Azure CLI verze 2.57 nebo novější. Pokud máte nainstalované rozšíření rozhraní příkazového řádku preview, musíte ho aktualizovat na verzi 3.0.0b10 nebo novější. Tato metoda se nedoporučuje, protože zastaralá rozhraní API v cílové verzi Kubernetes nemusí fungovat dlouhodobě. Po dokončení upgradu doporučujeme je co nejdříve odebrat.

  1. Obejít ověření, abyste ignorovali změny způsobující chyby rozhraní API a vyvolali upgrade. enable-force-upgrade Zadejte příznak a nastavte upgrade-override-until vlastnost tak, aby definovala konec okna, během kterého se ověření vynechá. Pokud není nastavená žádná hodnota, nastaví se okno na tři dny od aktuálního času. Datum a čas, které zadáte, musí být v budoucnu.

    az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    Poznámka:

    Z je návrhátor zóny pro nulový posun UTC/GMT, označovaný také jako čas Zulu. Tento příklad nastaví konec okna na 13:00:00 GMT. Další informace naleznete v tématu Kombinované vyjádření data a času.

Další kroky

Tento článek vám ukázal, jak automaticky zastavit upgrady clusteru AKS při zásadních změnách rozhraní API. Další informace o dalších možnostech upgradu pro clustery AKS najdete v tématu Možnosti upgradu pro clustery Azure Kubernetes Service (AKS).