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

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.

AKS teď automaticky zastaví operace upgradu sestávající ze změny podverze s zastaralými rozhraními API a pošle vám chybovou zprávu, která vás upozorní na problém.

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 buď 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 na stránku s přehledem vašeho clusteru a vyberte Diagnostikovat a řešit problémy.

  2. Přejděte do kategorie Vytvořit, Upgradovat, Odstranit a Škálovat a vyberte Vyřazení rozhraní API Kubernetes.

    A screenshot of the Azure portal showing the 'Selected Kubernetes API deprecations' section.

  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.

  4. Zkuste upgrade clusteru zopakovat.

Můžete také zkontrolovat využití rozhraní API tak, že povolíte Přehledy kontejneru a prozkoumáte protokoly auditu kube. Zkontrolujte operaci v zastaralém využití rozhraní API, abyste pochopili, jestli se jedná o případ použití kukátek .

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

Poznámka:

Tato metoda vyžaduje použití Azure CLI verze 2.53 nebo novější. Pokud máte nainstalované rozšíření rozhraní příkazového aks-preview řádku, budete muset aktualizovat na verzi 0.5.154 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.

  • Pomocí příkazu obejít ověření a ignorovat změny způsobující chyby az aks update rozhraní API. 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 update --name myAKSCluster --resource-group myResourceGroup --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.

  • Po úspěšném provedení předchozího příkazu můžete operaci upgradu zopakovat.

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

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