Pokyny k opravě a upgradu služby Azure Kubernetes Service

Tato část provozní příručky pro Azure Kubernetes Service (AKS) 2. den-2 popisuje opravy a upgradovací strategie pro pracovní uzly AKS a verze Kubernetes. Jako operátor clusteru musíte mít plán pro udržování clusterů v aktualizovaném stavu a monitorování změn a vyřazení rozhraní Kubernetes API v průběhu času.

Pozadí a typy aktualizací

Existují tři typy aktualizací pro AKS, z nichž každý vychází z dalšího:

Typ aktualizace Frekvence upgradu Podporovaná plánovaná údržba Podporované metody operací Cíl Odkaz na dokumentaci
Opravy zabezpečení operačního systému uzlu Noční Ano Automatická (týdenní), ruční/nespravovaná (noční) Uzel Automatické upgrade imagí uzlů
Upgrady verzí image uzlu Linux: Týdně
Windows: Měsíčně
Ano Automatická, ruční Fond uzlů Upgrade image uzlu AKS
Upgrady verze Kubernetes (clusteru) Kvartálně Ano Automatická, ruční Fond clusterů a uzlů Upgrade clusteru AKS

Typy aktualizací

  • Opravy zabezpečení operačního systému uzlu (jenom Linux). Pro uzly s Linuxem zpřístupní Canonical Ubuntu i Azure Linux opravy zabezpečení operačního systému jednou za den. Microsoft testuje a spojuje tyto opravy v týdenních aktualizacích imagí uzlů.

  • Týdenní aktualizace imagí uzlů AKS poskytuje týdenní aktualizace imagí uzlů. Mezi tyto aktualizace patří nejnovější opravy zabezpečení operačního systému a AKS, opravy chyb a vylepšení. Aktualizace uzlů nemění verzi Kubernetes. Verze jsou formátované podle data (například 202311.07.0) pro Linux a podle data sestavení a data operačního systému Windows Server (například 20348.2113.231115) pro Windows. Další informace najdete v tématu Stav vydání AKS.

  • Čtvrtletní verze Kubernetes AKS poskytuje čtvrtletní aktualizace pro verze Kubernetes. Tyto aktualizace umožňují uživatelům AKS využívat nejnovější funkce a vylepšení Kubernetes. Zahrnují opravy zabezpečení a aktualizace imagí uzlů. Další informace najdete v tématu Podporované verze Kubernetes v AKS.

Důležité informace o předběžném upgradu

Celkový dopad na cluster

  • Místní upgrady (uzel i cluster) mají vliv na výkon vašeho prostředí Kubernetes, zatímco probíhají. Tento účinek můžete minimalizovat prostřednictvím správné konfigurace rozpočtů přerušení podů, konfigurace přepětí uzlů a správného plánování.
  • Použití strategie modré/zelené aktualizace místo upgradu eliminuje jakýkoli dopad na výkon clusteru, ale zvyšuje náklady a složitost.
  • Bez ohledu na strategii upgradu a oprav musíte mít robustní proces testování a ověřování clusteru. Nejprve opravujte a upgradujte nižší prostředí a proveďte ověření po údržbě, abyste zkontrolovali stav clusteru, uzlu, nasazení a aplikace.

Osvědčené postupy pro úlohy AKS

Pokud chcete zajistit hladký provoz clusteru AKS během údržby, postupujte podle těchto osvědčených postupů:

  • Definujte rozpočty přerušení podů (PDB). Nastavení rozpočtů přerušení podů pro vaše nasazení je nezbytné. Soubory PDB vynucují minimální počet dostupných replik aplikace, aby se zajistila nepřetržitá funkčnost během událostí přerušení. Soubory PDB pomáhají udržovat stabilitu clusteru během údržby nebo selhání uzlů.

    Upozorňující

    Chybně nakonfigurované soubory PDB můžou blokovat proces upgradu, protože rozhraní API Kubernetes zabraňuje potřebnému kabelu a vyprázdnění, ke kterému dochází při postupném upgradu image uzlu. Pokud se navíc současně přesune příliš mnoho podů, může dojít k výpadku aplikace. Konfigurace PDB toto riziko snižuje.

  • Zkontrolujte dostupné limity výpočetních prostředků a sítí. Ověřte dostupné limity výpočetních prostředků a sítí ve vašem předplatném Azure prostřednictvím stránky kvóty na webu Azure Portal nebo pomocí příkazu az quota. Zkontrolujte výpočetní a síťové prostředky, zejména virtuální procesory virtuálních počítačů pro uzly a počet virtuálních počítačů a škálovacích sad virtuálních počítačů. Pokud se blížíte limitu, před upgradem požádejte o navýšení kvóty.
  • Zkontrolujte dostupný prostor IP adres v podsítích uzlů. Během aktualizací se v clusteru vytvoří další přepětí uzlů a pody se přesunou do těchto uzlů. Je důležité monitorovat adresní prostor IP adres v podsítích uzlů, abyste měli jistotu, že bude k těmto změnám dostatek adresního prostoru. Různé konfigurace sítě Kubernetes mají různé požadavky na IP adresy. Jako výchozí bod si projděte tyto aspekty:
    • Během upgradu se počet IP adres uzlu zvýší podle vaší hodnoty nárůstu. (Minimální hodnota nárůstu je 1.)
    • Clustery založené na Azure CNI přiřazují IP adresy jednotlivým podům, takže pro přesun podů musí být dostatek prostoru IP adres.
    • Váš cluster bude během upgradů fungovat i nadále. Ujistěte se, že zbývá dostatek místa na IP adrese, aby se povolilo škálování uzlů (pokud je povolené).
  • Nastavte více prostředí. Doporučujeme nastavit samostatná prostředí, jako je vývoj, příprava a produkční prostředí, abyste před uvedením změn do produkčního prostředí mohli testovat a ověřovat změny.
  • Vylaďte hodnoty upgradu přepětí. Ve výchozím nastavení má AKS hodnotu 1, což znamená, že se v rámci procesu upgradu vytvoří jeden další uzel. Zvýšením této hodnoty můžete zvýšit rychlost upgradu AKS. 33 % nárůstu je doporučená maximální hodnota pro úlohy, které jsou citlivé na přerušení. Další informace najdete v tématu Možnosti upgradu pro AKS.
  • Ladění časového limitu vyprázdnění uzluČasový limit vyprázdnění uzlu určuje maximální dobu, po kterou bude cluster čekat při pokusu o přeplánování podů na uzlu, který se aktualizuje. Výchozí hodnota pro tuto hodnotu je 30 minut. Pro úlohy, které se snaží přeplánovat pody, může být užitečné upravit tuto výchozí hodnotu.
  • Plánování a plánování časových období údržby Procesy upgradu můžou ovlivnit celkový výkon clusteru Kubernetes. Naplánujte místní procesy upgradu mimo okna využití ve špičce a monitorujte výkon clusteru, abyste zajistili odpovídající velikost, zejména během procesů aktualizace.
  • Zkontrolujte další závislosti v clusteru. Operátoři Kubernetes často nasazují do clusteru Kubernetes další nástroje jako součást operací, jako jsou škálovací nástroje KEDA, Dapr a sítě služeb. Při plánování procesů upgradu zkontrolujte poznámky k verzi všech komponent, které používáte, abyste zajistili kompatibilitu s cílovou verzí.

Správa týdenních aktualizací imagí uzlů

Microsoft vytvoří novou image uzlu pro uzly AKS přibližně jednou týdně. Image uzlu obsahuje aktuální opravy zabezpečení operačního systému, aktualizace jádra operačního systému, aktualizace zabezpečení Kubernetes, aktualizované verze binárních souborů, jako jsou kubelet a aktualizace verzí součástí uvedené v poznámkách k verzi.

Při aktualizaci image uzlu se na uzlech fondu cílových uzlů aktivuje akce cordonu a vyprázdnění :

  • Do fondu uzlů se přidá uzel s aktualizovanou imagí. Počet uzlů přidaných najednou se řídí hodnotou nárůstu.
  • Jeden z existujících uzlů je kabelonovaný a vyprázdněný. Cordoning zajišťuje, že uzel neplánuje pody. Vyprázdnění odebere jeho pody a naplánuje je do jiných uzlů.
  • Po úplném vyprázdnění uzlu se odebere z fondu uzlů. Aktualizovaný uzel přidaný přepětím ho nahradí.
  • Tento proces se opakuje pro každý uzel, který je potřeba aktualizovat ve fondu uzlů.

Podobný proces probíhá během upgradu clusteru.

Automatické upgrady imagí uzlů

Obecně řečeno, většina clusterů by měla používat NodeImage aktualizační kanál. Tento kanál poskytuje každý týden aktualizovaný virtuální pevný disk image uzlu a aktualizuje se podle časového období údržby clusteru.

Mezi dostupné kanály patří:

  • None. Nejsou automaticky použity žádné aktualizace.
  • Unmanaged. Aktualizace Ubuntu a Azure Linuxu používají operační systém každou noc. Restartování se musí spravovat samostatně.
  • SecurityPatch. Noční opravy zabezpečení se nasazují jako aktualizace image operačního systému.
  • NodeImage. Týdenní opravy AKS a noční opravy zabezpečení se kombinují.

Pokud zvolíte Unmanaged aktualizační kanál, musíte proces restartování spravovat pomocí nástroje, jako je kured. Pokud zvolíte SecurityPatch aktualizační kanál, aktualizace se dají použít stejně často jako noc. Tato úroveň opravy vyžaduje, aby virtuální pevné disky byly uloženy ve vaší skupině prostředků, což způsobuje nominální poplatek. Kromě toho je potřeba zkombinovat SecurityPatch konfiguraci s NodeImage konfigurací, abyste umožnili kompletní proces oprav uzlů.

Osvědčeným postupem je použít NodeImage aktualizační kanál a nakonfigurovat aksManagedNodeOSUpgradeSchedule časové období údržby na čas, kdy je cluster mimo období využití ve špičce. Viz Vytvoření časového období údržby pro atributy, které můžete použít ke konfiguraci časového období údržby clusteru. Klíčové atributy jsou:

  • name. Používá se aksManagedNodeOSUpgradeSchedule pro aktualizace operačního systému uzlu.
  • utcOffset. Nakonfigurujte časové pásmo.
  • startTime. Nastavte počáteční čas časového období údržby.
  • dayofWeek. Nastavte dny v týdnu pro okno. Například Saturday.
  • schedule. Nastavte frekvenci okna. Pro NodeImage aktualizace doporučujeme weekly.
  • durationHours. Nastavte tento atribut na nejméně čtyři hodiny.

Tento příklad nastaví týdenní časové období údržby na 8:00 východní čas v sobotu:

az aks maintenanceconfiguration add -g <ResourceGroupName> --cluster-name <AKSClusterName> --name aksManagedNodeOSUpgradeSchedule --utcOffset -05:00 --start-time 20:00 --day-of-week Saturday --schedule-type weekly --duration 4

Další příklady najdete v tématu Přidání konfigurace časového období údržby pomocí Azure CLI.

Tato konfigurace by se ideálně nasadila jako součást nasazení infrastruktury jako kódu clusteru.

Nakonfigurovaná období údržby můžete zkontrolovat pomocí Azure CLI:

az aks maintenanceconfiguration list -g <ResourceGroupName> --cluster-name <AKSClusterName>

Podrobnosti o konkrétním časovém období údržby můžete také zkontrolovat pomocí rozhraní příkazového řádku:

az aks maintenanceconfiguration show -g <ResourceGroupName> --cluster-name <AKSClusterName> --name aksManagedNodeOSUpgradeSchedule

Pokud není nakonfigurované časové období údržby clusteru, aktualizace imagí uzlu probíhají biweekly. Co nejvíce probíhá údržba AKS v rámci nakonfigurovaného časového období, ale doba údržby není zaručena.

Stav událostí upgradu můžete zkontrolovat prostřednictvím protokolů aktivit Azure nebo zkontrolovat protokoly prostředků ve vašem clusteru.

Události služby Azure Kubernetes Service (AKS) můžete přihlásit k odběru událostí služby Azure Event Grid , které zahrnují události upgradu AKS. Tyto události vás můžou upozornit, když je k dispozici nová verze Kubernetes a pomáhá sledovat změny stavu uzlů během procesů upgradu.

Týdenní proces aktualizace můžete spravovat také pomocí GitHub Actions. Tato metoda poskytuje podrobnější kontrolu nad procesem aktualizace.

Ruční proces aktualizace uzlu

Pomocí příkazu kubectl describe nodes můžete určit verzi jádra operačního systému a verzi image operačního systému uzlů ve vašem clusteru:

kubectl describe nodes <NodeName>

Příklad výstupu (zkrácený):

System Info:
  Machine ID:                 bb2e85e682ae475289f2e2ca4ed6c579
  System UUID:                6f80de9d-91ba-490c-8e14-9e68b7b82a76
  Boot ID:                    3aed0fd5-5d1d-4e43-b7d6-4e840c8ee3cf
  Kernel Version:             5.15.0-1041-azure
  OS Image:                   Ubuntu 22.04.2 LTS
  Operating System:           linux
  Architecture:               arm64
  Container Runtime Version:  containerd://1.7.1+azure-1
  Kubelet Version:            v1.26.6
  Kube-Proxy Version:         v1.26.6

Pomocí příkazu azure CLI az aks nodepool list určete verze image uzlu uzlů v clusteru:

az aks nodepool list \
   --resource-group <ResourceGroupName> --cluster-name <AKSClusterName> \
   --query "[].{Name:name,NodeImageVersion:nodeImageVersion}" --output table

Příklad výstupu:

Name       NodeImageVersion
---------  ---------------------------------------------
systempool  AKSUbuntu-2204gen2containerd-202307.12.0
usernodepool  AKSUbuntu-2204gen2arm64containerd-202307.12.0

Pomocí příkazu az aks nodepool get-upgrades určete nejnovější dostupnou verzi image uzlu pro konkrétní fond uzlů:

az aks nodepool get-upgrades \
   --resource-group <ResourceGroupName> \
   --cluster-name <AKSClusterName> \
   --nodepool-name <NodePoolName> --output table

Příklad výstupu:

KubernetesVersion    LatestNodeImageVersion                         Name     OsType
-------------------  ---------------------------------------------  -------  --------
1.26.6               AKSUbuntu-2204gen2arm64containerd-202308.10.0  default  Linux

Upgrady clusterů

Komunita Kubernetes vydává podverze Kubernetes přibližně každé tři měsíce. Abyste měli přehled o nových verzích a vydaných verzích AKS, pravidelně se aktualizuje stránka s zprávami k vydání verze AKS. Můžete se také přihlásit k odběru informačního kanálu RSS GitHubU AKS, který poskytuje aktualizace změn a vylepšení v reálném čase.

AKS se řídí zásadami podpory N–2 , což znamená, že úplná podpora je poskytována pro nejnovější verzi (N) a dvě předchozí podverze. Pro třetí předchozí podverzi se nabízí omezená podpora platformy. Další informace najdete v tématu Zásady podpory AKS.

Pokud chcete zajistit, aby vaše clustery AKS zůstaly podporované, musíte vytvořit proces průběžného upgradu clusteru. Tento proces zahrnuje testování nových verzí v nižších prostředích a plánování upgradu na produkční prostředí, než se nová verze stane výchozí. Tento přístup může udržovat předvídatelnost procesu upgradu a minimalizovat přerušení aplikací. Další informace najdete v tématu Upgrade clusteru AKS.

Pokud váš cluster vyžaduje delší cyklus upgradu, použijte verze AKS, které podporují možnost Dlouhodobé podpory (LTS). Pokud povolíte možnost LTS, Microsoft poskytuje rozšířenou podporu pro verze Kubernetes na dva roky, což umožňuje delší a kontrolovaný cyklus upgradu. Další informace najdete v tématu Podporované verze Kubernetes v AKS.

Upgrade clusteru zahrnuje upgrade uzlu a používá podobný proces kabelonu a vyprázdnění.

Před upgradem

Osvědčeným postupem je vždy upgradovat a testovat v nižších prostředích, abyste minimalizovali riziko přerušení v produkčním prostředí. Upgrady clusteru vyžadují dodatečné testování, protože zahrnují změny rozhraní API, které můžou ovlivnit nasazení Kubernetes. Při upgradu vám můžou pomoct následující zdroje informací:

  • Sešit AKS pro zastaralá rozhraní API Na stránce přehledu clusteru na webu Azure Portal můžete vybrat Diagnostikovat a řešit problémy, přejít do kategorie Vytvořit, Upgradovat, Odstranit a Škálovat a pak vybrat Vyřazení rozhraní API Kubernetes. Tím se spustí sešit, který kontroluje zastaralé verze rozhraní API, které se používají ve vašem clusteru. Další informace najdete v tématu Odebrání použití zastaralých rozhraní API.
  • Stránka s zprávami k vydání verze AKS Tato stránka obsahuje komplexní informace o nových verzích a vydaných verzích AKS. Projděte si tyto poznámky, abyste měli přehled o nejnovějších aktualizacích a změnách.
  • Stránka s zprávami k vydání verze Kubernetes Tato stránka obsahuje podrobné přehledy o nejnovějších verzích Kubernetes. Věnujte zvláštní pozornost naléhavým poznámkám k upgradu, které zvýrazňují důležité informace, které by mohly ovlivnit váš cluster AKS.
  • Komponenty AKS způsobující změny podle verze Tato tabulka poskytuje komplexní přehled zásadních změn v komponentách AKS podle verze. Odkazem na tuto příručku můžete proaktivně řešit případné problémy s kompatibilitou před procesem upgradu.

Kromě těchto prostředků Microsoftu zvažte použití opensourcových nástrojů k optimalizaci procesu upgradu clusteru. Jedním z takových nástrojů je Fairwinds json, který může kontrolovat vaše nasazení a grafy Helm pro zastaralá rozhraní API Kubernetes. Tyto nástroje vám můžou pomoct zajistit, aby vaše aplikace zůstaly kompatibilní s nejnovějšími verzemi Kubernetes.

Postup upgradu

Pokud chcete zkontrolovat, kdy cluster vyžaduje upgrade, použijte příkaz az aks get-upgrades a získejte seznam dostupných verzí upgradu pro cluster AKS. Z výsledků určete cílovou verzi clusteru.

Tady je příklad:

az aks get-upgrades \
   --resource-group <ResourceGroupName> --name <AKSClusterName> --output table

Příklad výstupu:

MasterVersion  Upgrades
-------------  ---------------------------------
1.26.6         1.27.1, 1.27.3

Zkontrolujte verze uzlů v Kubernetes ve fondech uzlů a určete fondy, které je potřeba upgradovat:

az aks nodepool list \
   --resource-group <ResourceGroupName> --cluster-name <AKSClusterName> \
   --query "[].{Name:name,k8version:orchestratorVersion}" --output table

Příklad výstupu:

Name          K8version
------------  ------------
systempool    1.26.6
usernodepool  1.26.6

Ruční upgrade

Pokud chcete minimalizovat přerušení a zajistit hladký upgrade clusteru AKS, postupujte podle tohoto postupu upgradu:

  1. Upgradujte řídicí rovinu AKS. Začněte upgradem řídicí roviny AKS. Tento krok zahrnuje upgrade komponent řídicí roviny, které jsou zodpovědné za správu a orchestraci clusteru. Upgrade řídicí roviny nejprve pomáhá zajistit kompatibilitu a stabilitu před upgradem jednotlivých fondů uzlů.
  2. Upgradujte fond systémových uzlů. Po upgradu řídicí roviny upgradujte fond systémových uzlů v clusteru AKS. Fondy uzlů se skládají z instancí virtuálních počítačů, které spouštějí úlohy vaší aplikace. Upgrade fondů uzlů samostatně umožňuje řízený a systematický upgrade základní infrastruktury, která podporuje vaše aplikace.
  3. Upgradujte fondy uzlů uživatele. Po upgradu fondu systémových uzlů upgradujte všechny fondy uzlů uživatele v clusteru AKS.

Tímto přístupem můžete minimalizovat přerušení během procesu upgradu a udržovat dostupnost aplikací. Toto jsou podrobné kroky:

  1. Spuštěním příkazu az aks upgrade s příznakem --control-plane-only upgradujte pouze řídicí rovinu clusteru, nikoli fondy uzlů clusteru:

    az aks upgrade \
       --resource-group <ResourceGroupName> --name <AKSClusterName> \
       --control-plane-only \
       --kubernetes-version <KubernetesVersion>
    
  2. Spuštěním příkazu az aks nodepool upgradujte fondy uzlů na cílovou verzi:

    az aks nodepool upgrade \
       --resource-group <ResourceGroupName> --cluster-name <AKSClusterName> --name <NodePoolName> \
       --no-wait --kubernetes-version <KubernetesVersion>
    

    Během upgradu fondu uzlů vytvoří AKS přepětí uzlu, kabelony a vyprázdní pody v uzlu, který se upgraduje, znovu vytvoří uzel a pak zruší opravy podů. Tento proces se pak opakuje pro všechny ostatní uzly ve fondu uzlů.

Stav procesu upgradu můžete zkontrolovat spuštěním kubectl get eventspříkazu . Informace o řešení potíží s upgradem clusteru najdete v dokumentaci k řešení potíží se službou AKS.

Registraceclusterch

AKS také nabízí řešení automatického upgradu clusteru, aby byl cluster aktuální. Pokud používáte toto řešení, měli byste ho spárovat s časovým obdobím údržby, abyste mohli řídit načasování upgradů. Okno upgradu musí být čtyři hodiny nebo více. Když zaregistrujete cluster v kanálu vydaných verzí, Microsoft automaticky spravuje verzi a tempo upgradu clusteru a jeho fondů uzlů.

Automatický upgrade clusteru nabízí různé možnosti kanálu verze. Tady je doporučená konfigurace prostředí a kanálu vydaných verzí:

Prostředí Upgrade kanálu Popis
Výroba stable Pro stabilitu a vyspělost verzí použijte stabilní nebo běžný kanál pro produkční úlohy.
Příprava, testování, vývoj Stejné jako v produkčním prostředí Abyste měli jistotu, že testy ukazují na verzi, na kterou upgradujete produkční prostředí, použijte stejný kanál verze jako produkční.
Testovací hodnoty rapid Pokud chcete otestovat nejnovější verze Kubernetes a nové funkce nebo rozhraní API AKS, použijte rapid kanál. Dobu uvedení na trh můžete vylepšit, když se verze rapid propaguje na kanál, který používáte pro produkční prostředí.

Důležité informace

Následující tabulka popisuje charakteristiky různých scénářů upgradu a oprav AKS:

Scénář Iniciovaný uživatelem Upgrade Kubernetes Upgrade jádra operačního systému Upgrade image uzlu
Opravy zabezpečení No Ne Ano, po restartování Ano
Vytváření clusterů Ano Možná Ano, pokud aktualizovaná image uzlu používá aktualizované jádro. Ano, vzhledem k existujícímu clusteru, pokud je k dispozici nová verze
Upgrade Kubernetes řídicí roviny Ano Ano No Ne
Upgrade Kubernetes fondu uzlů Ano Yes Ano, pokud aktualizovaná image uzlu používá aktualizované jádro. Ano, pokud je k dispozici nová verze
Vertikální navýšení kapacity fondu uzlů Yes No No Ne
Upgrade image uzlu Yes No Ano, pokud aktualizovaná image uzlu používá aktualizované jádro. Ano
Automatický upgrade clusteru No Ano Ano, pokud aktualizovaná image uzlu používá aktualizované jádro. Ano, pokud je k dispozici nová verze
  • Oprava zabezpečení operačního systému použitá v rámci upgradu image uzlu může nainstalovat novější verzi jádra, než by se nainstalovalo vytvoření nového clusteru.
  • Vertikální navýšení kapacity fondu uzlů používá model, který je aktuálně přidružený ke škálovací sadě virtuálních počítačů. Jádra operačního systému se upgradují, když se použijí opravy zabezpečení a uzly se restartují.

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autor:

Další přispěvatelé:

Pokud chcete zobrazit nepublikované profily LinkedIn, přihlaste se na LinkedIn.

Další kroky