Sdílet prostřednictvím


Možnosti upgradu pro clustery Azure Kubernetes Service (AKS)

Tento článek popisuje různé možnosti upgradu pro clustery AKS. Pokud chcete provést základní upgrade verze Kubernetes, přečtěte si téma Upgrade clusteru AKS.

Clustery AKS, které používají více fondů uzlů nebo uzlů Windows Serveru, najdete v tématu Upgrade fondu uzlů v AKS. Pokud chcete upgradovat konkrétní fond uzlů bez upgradu clusteru Kubernetes, přečtěte si téma Upgrade konkrétního fondu uzlů.

Provedení ručních upgradů

Ruční upgrady můžete provést, abyste mohli řídit, kdy se cluster upgraduje na novou verzi Kubernetes. Ruční upgrady jsou užitečné, když chcete před upgradem produkčního clusteru otestovat novou verzi Kubernetes. K upgradu clusteru na konkrétní verzi Kubernetes, která není nejnovější dostupnou verzí, můžete použít také ruční upgrady.

Pokud chcete provést ruční upgrady, přečtěte si následující články:

Konfigurace automatických upgradů

Automatické upgrady můžete nakonfigurovat tak, aby automaticky upgradovali cluster na nejnovější dostupnou verzi Kubernetes. Automatické upgrady jsou užitečné, když chcete zajistit, aby váš cluster vždy běžel s nejnovější verzí Kubernetes. Můžete také použít automatické upgrady, abyste zajistili, že váš cluster vždy používá podporovanou verzi Kubernetes.

Pokud chcete nakonfigurovat automatické upgrady, přečtěte si následující články:

Zvláštní aspekty fondů uzlů, které zahrnují více zón dostupnosti

AKS používá vyrovnávání zóny s nejlepším úsilím ve skupinách uzlů. Během nárůstu upgradu jsou zóny pro přepětí uzlů ve škálovacích sadách virtuálních počítačů předem neznámé, což může během upgradu dočasně způsobit nevyváženou konfiguraci zóny. AKS však po dokončení upgradu odstraní přepětí uzlů a zachová původní zůstatek zóny. Pokud chcete zachovat rovnováhu mezi zónami během upgradů, můžete zvýšit nárůst na více ze tří uzlů a škálovací sady virtuálních počítačů vyrovnávají vaše uzly napříč zónami dostupnosti pomocí vyrovnávání zóny s nejlepším úsilím. Při vyrovnávání zóny s nejlepším úsilím se škálovací sada pokusí škálovat a snížit kapacitu při zachování rovnováhy. Pokud to ale z nějakého důvodu není možné (například pokud dojde k výpadku jedné zóny, škálovací sada nemůže vytvořit nový virtuální počítač v této zóně), škálovací sada umožňuje dočasné nevyváženosti úspěšného horizontálního navýšení nebo snížení kapacity.

Trvalé deklarace identity svazků (PVC) zálohované disky místně redundantního úložiště Azure (LRS) jsou vázané na určitou zónu a může selhat obnovení okamžitě, pokud přepětí neodpovídá zóně PVC. Pokud se zóny neshodují, může to způsobit výpadek vaší aplikace, když operace upgradu pokračuje vyprázdnění uzlů, ale virtuální počítače jsou vázané na zónu. Pokud chcete tento případ zpracovat a zachovat vysokou dostupnost, nakonfigurujte ve vaší aplikaci rozpočet přerušení podů, který kubernetes umožní respektovat požadavky na dostupnost během operace vyprázdnění.

Optimalizace pro chování neschůdných uzlů (Preview)

Chování procesu upgradu můžete nakonfigurovat pro selhání vyprázdnění. Výchozí chování upgradu je Schedule, které se skládá ze selhání vyprázdnění uzlu, což způsobuje selhání operace upgradu a ponechání neaktivních uzlů ve schedovatelném stavu. Případně můžete vybrat Cordon chování, které přeskočí uzly, které se nedaří vyprázdnit, jejich umístěním do karantény, popisky kubernetes.azure.com/upgrade-status:Quarantineda pokračovat upgradem zbývajících uzlů. Toto chování zajišťuje, aby všechny uzly byly upgradovány nebo v karanténě. Tento přístup umožňuje řešit potíže se selháním vyprázdnění a řádně spravovat uzly v karanténě.

Návody nastavit nové chování Cordonu?

Použijte cli Preview a nainstalujte aks-preview rozšíření 9.0.0b3 nebo novější.

K aktualizaci nebo instalaci aks-preview rozšíření můžete použít následující příkazy:

az extension update --name aks-preview
az extension add --name aks-preview

Aktualizujte chování fondu uzlů, které je možné zrušit, na Cordon:

az aks nodepool update --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --resource-group $RESOURCE_GROUP --max-surge 1 --undrainable-node-behavior Cordon

Následující příklad výstupu ukazuje aktualizované chování neschovatelného uzlu:

"upgradeSettings": {
    "drainTimeoutInMinutes": null,
    "maxSurge": "1",
    "nodeSoakDurationInMinutes": null,
    "undrainableNodeBehavior": "Cordon"
  }

Ověřte popisek na všech blokovaných uzlech. Pokud při upgradu dojde k selhání vyprázdnění uzlu, použijte následující příkaz:

kubectl get nodes --show-labels=true

Blokované uzly jsou neplánované pro pody a označené popiskem "kubernetes.azure.com/upgrade-status: Quarantined". Maximální počet uzlů, které je možné blokovat, nesmí být větší než Max-Surge hodnota.

Návody odebrat blokované uzly?

Nejprve vyřešte problém, který způsobuje vyprazdnění. Následující příklad odebere zodpovědný soubor PDB:

kubectl delete pdb nginx-pdb
poddisruptionbudget.policy "nginx-pdb" deleted.

Pak pomocí příkazu odstraňte blokovaný uzel az aks nodepool delete-machines . Tento příkaz je užitečný, pokud chcete snížit nároky fondu uzlů odebráním uzlů, které zůstaly ve starších verzích.

az aks nodepool delete-machines --cluster-name MyCluster --machine-names aks-nodepool1-test123-vmss000000 --name nodepool1 --resource-group TestRG

Po dokončení tohoto kroku můžete stav clusteru odsouhlasit provedením jakékoli operace aktualizace bez volitelných polí, jak je uvedeno tady.

Příklad příkazu:

az aks update --resource-group TestRG --name MyCluster

Případně můžete fond uzlů škálovat na stejný počet uzlů jako počet upgradovaných uzlů. Tato akce zajistí, že se fond uzlů dostane k zamýšlené původní velikosti. AKS upřednostňuje odebrání blokovaných uzlů. Tento příkaz také obnoví stav zřizování clusteru do Succeeded. V uvedeném 2 příkladu je celkový počet upgradovaných uzlů.

az aks nodepool scale --resource-group TestRG --cluster-name MyCluster --name nodepool1 --node-count 2 

Optimalizace upgradů za účelem zlepšení výkonu a minimalizace přerušení

Kombinace časového období plánované údržby, max. přepětí, rozpočtu na přerušení podů, vypršení časového limitu vyprázdnění uzlu a doby namočení uzlu může výrazně zvýšit pravděpodobnost úspěšného dokončení upgradů uzlů na konci časového období údržby a zároveň minimalizovat přerušení.

  • Časové období plánované údržby umožňuje týmům služeb naplánovat automatický upgrade během předdefinovaného časového období, obvykle v období s nízkým provozem, aby minimalizovaly dopad úloh. Doporučujeme dobu trvání intervalu nejméně čtyř hodin.
  • Max Surge ve fondu uzlů umožňuje během procesu upgradu požádat o dodatečnou kvótu a omezuje počet uzlů vybraných pro upgrade současně. Vyšší maximální nárůst vede k rychlejšímu procesu upgradu. Nedoporučujeme ho nastavit na 100 %, protože upgraduje všechny uzly současně, což může způsobit přerušení spuštěných aplikací. Pro fondy produkčních uzlů doporučujeme maximální kvótu navýšení kapacity 33 %.
  • Rozpočet přerušení podů je nastavený pro aplikace služeb a omezuje počet podů, které můžou být mimo provoz při dobrovolném přerušení, jako jsou upgrady uzlů řízené AKS. Dá se nakonfigurovat jako minAvailable repliky, což označuje minimální počet podů aplikací, které musí být aktivní, nebo maxUnavailable repliky označující maximální počet podů aplikací, které je možné ukončit, a zajistit tak vysokou dostupnost aplikace. Projděte si pokyny pro konfiguraci rozpočtů přerušení podů (PDB). Hodnoty PDB by se měly ověřit a určit nastavení, která nejlépe vyhovují vaší konkrétní službě.
  • Časový limit vyprázdnění uzlu ve fondu uzlů umožňuje nakonfigurovat dobu čekání na vyřazení podů a řádné ukončení na uzel během upgradu. Tato možnost je užitečná při práci s dlouhotrvajícími úlohami. Když je zadaný časový limit vyprázdnění uzlu (v minutách), AKS respektuje čekání na rozpočty přerušení podů. Pokud není zadaný, výchozí časový limit je 30 minut.
  • Doba namočení uzlu pomáhá omezit upgrady uzlů řízeným způsobem a může minimalizovat výpadky aplikací během upgradu. Pokud chcete zkontrolovat připravenost aplikace mezi upgrady uzlů, můžete zadat dobu čekání, pokud možno co nejpřesněji k 0 minutám. Pokud není zadána, výchozí hodnota je 0 minut. Doba namočení uzlu funguje společně s vlastnostmi časového limitu maximálního nárůstu a vyprázdnění uzlu dostupnými ve fondu uzlů za účelem zajištění správných výsledků z hlediska rychlosti upgradu a dostupnosti aplikací.

Další kroky

Tento článek uvádí různé možnosti upgradu pro clustery AKS. Podrobné informace o osvědčených postupech upgradu a dalších aspektech najdete v pokynech k opravám a upgradu AKS.