Upgrade clusteru Kubernetes operátora Azure Nexus
Tento článek obsahuje pokyny k upgradu clusteru Operator Nexus Kubernetes za účelem získání nejnovějších funkcí a aktualizací zabezpečení. Součástí životního cyklu clusteru Kubernetes je provádění pravidelných upgradů na nejnovější verzi Kubernetes. Abyste získali nejnovější funkce, je důležité použít nejnovější verze zabezpečení nebo upgradovat. V tomto článku se dozvíte, jak zkontrolovat, nakonfigurovat a použít upgrady na cluster Kubernetes.
Omezení
- Výchozí proces upgradu clusteru je přístup se škálováním na více instancí, což znamená, že se přidá alespoň jeden další uzel (nebo libovolný počet uzlů nakonfigurovaných v maximálním nárůstu kapacity). Pokud není k dispozici dostatečná kapacita, upgrade se nezdaří.
- Jakmile budou k dispozici nové verze Kubernetes, clustery tenantů neprojdou automatickými upgrady. Uživatelé by měli zahájit upgrade, když jsou všechny síťové funkce v clusteru připravené pro podporu nové verze Kubernetes. Další informace najdete v tématu Upgrade clusteru.
- Operátor Nexus nabízí upgrady pro celý cluster a zajišťuje konzistenci napříč všemi fondy uzlů. Upgrade fondu s jedním uzlem se nepodporuje. Image uzlu se také upgraduje jako součást upgradu clusteru, když je k dispozici nová verze.
- Během upgradů clusteru dojde ke ztrátě přizpůsobení uzlů agentů. Doporučuje se umístit tato přizpůsobení
DaemonSet
místo ručních změn konfigurace uzlu, aby se po upgradu zachovaly. - Změny základních konfigurací doplňků se obnoví do výchozí konfigurace doplňku v rámci procesu upgradu clusteru. Vyhněte se přizpůsobení konfigurace doplňků (například Calico atd.), aby se zabránilo potenciálním selháním upgradu. Pokud dojde k problémům s obnovením konfigurace doplňku, může dojít k selhání upgradu.
- Při upgradu clusteru Operator Nexus Kubernetes není možné přeskočit podverze Kubernetes. Všechny upgrady musíte provést postupně podle čísla hlavní verze. Například upgrady mezi verzemi 1.14.x ->1.15.x nebo 1.15.x ->1.16.x jsou povolené, ale verze 1.14.x ->1.16.x není povolená. Pokud je vaše verze za více než jednou hlavní verzí, měli byste provést více sekvenčních upgradů.
- Maximální nárůst nebo maximální nedostupné hodnoty musí být nastaveny během vytváření clusteru. Tyto hodnoty nemůžete po vytvoření clusteru změnit. Další informace najdete v tématu
upgradeSettings
Vytvoření clusteru Kubernetes operátora Azure Nexus.
Požadavky
- Cluster Kubernetes operátora Azure, který je nasazený ve skupině prostředků ve vašem předplatném Azure.
- Pokud používáte Azure CLI, musíte mít nejnovější verzi Azure CLI. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.
- Minimální požadovaná
networkcloud
verze rozšíření az-cli:2.0.b3
- Seznamte se s konceptem sad verzí. Další informace najdete v části Sady verzí Nexus Kubernetes.
Kontrola dostupných upgradů
Pomocí následujících kroků zkontrolujte, které verze Kubernetes jsou pro váš cluster k dispozici:
Použití Azure CLI
Následující příkaz Azure CLI vrátí dostupné upgrady pro váš cluster:
az networkcloud kubernetescluster show --name <NexusK8sClusterName> --resource-group <ResourceGroup> --output json --query availableUpgrades
Ukázkový výstup:
[
{
"availabilityLifecycle": "GenerallyAvailable",
"version": "v1.25.4-4"
},
{
"availabilityLifecycle": "GenerallyAvailable",
"version": "v1.25.6-1"
},
{
"availabilityLifecycle": "GenerallyAvailable",
"version": "v1.26.3-1"
}
]
Použití portálu Azure Portal
- Přihlaste se k portálu Azure.
- Přejděte do clusteru Kubernetes operátora Nexus.
- V části Přehled vyberte kartu Dostupné upgrady .
Zvolte verzi, na které chcete upgradovat.
Dostupný výstup upgradu označuje, že pro upgrade existuje více verzí, ze které si můžete vybrat. V tomto konkrétním scénáři pracuje aktuální cluster na verzi v1.25.4-3.
. V důsledku toho jsou k dispozici dostupné možnosti v1.25.4-4
upgradu a nejnovější verze v1.25.6-1.
opravy. K dispozici je také nová podverze.
Máte možnost upgradovat na některou z dostupných verzí. Doporučeným průběhem akce je však provedení upgradu na nejnovější dostupnou major-minor-patch-versionbundle
verzi.
Poznámka:
Vstupní formát verze je major.minor.patch
nebo major.minor.patch-versionbundle
. Vstup verze musí být jednou z dostupných verzí upgradu. Pokud je 1.1.1-1
například aktuální verze clusteru , platné vstupy verzí jsou 1.1.1-2
nebo 1.1.1-x
. I když 1.1.1
je platný formát, neaktivuje žádnou aktualizaci, protože aktuální verze je již 1.1.1
. Chcete-li zahájit aktualizaci, můžete zadat úplnou verzi sady verzí, například 1.1.1-2
. 1.1.2
Jedná 1.2.x
se však o platný vstup a použije nejnovější sadu verzí dostupnou pro 1.1.2
nebo 1.2.x
.
Upgrade clusteru
Během procesu upgradu clusteru provede operátor Nexus následující operace:
- Přidejte do clusteru nový uzel řídicí roviny se zadanou verzí Kubernetes.
- Po přidání nového uzlu se kabelon a vyprázdnění jednoho ze starých uzlů řídicí roviny zajistí, aby se úlohy spuštěné na něm řádně přesunuly do jiných uzlů řídicí roviny, které jsou v pořádku.
- Po vyprázdnění starého uzlu řídicí roviny se odebere a do clusteru se přidá nový uzel řídicí roviny.
- Tento proces se opakuje, dokud se neupgradují všechny uzly řídicí roviny v clusteru.
- Pokud upgradujete pracovní uzly přes přepětí (výchozí):
- Pro každý fond agentů v clusteru přidejte nový pracovní uzel (nebo libovolný počet uzlů nakonfigurovaných v maximálním nárůstu) se zadanou verzí Kubernetes. Současně se upgraduje více fondů agentů.
- Cordon a vyprázdněte jeden ze starých pracovních uzlů, abyste minimalizovali přerušení spuštěných aplikací. Pokud používáte maximální nárůst výkonu, kabelony a vyprázdní tolik pracovních uzlů najednou jako počet zadaných uzlů vyrovnávací paměti.
- Po vyprázdnění starého pracovního uzlu se odebere a do clusteru se přidá nový pracovní uzel s novou verzí Kubernetes (nebo tolik uzlů, kolik je nakonfigurovaných v maximálním nárůstu výkonu).
- Pokud upgradujete pracovní uzly bez nárůstu:
- Pro každý fond agentů v clusteru je starý pracovní uzel (nebo tolik uzlů nakonfigurovaných maximálním nedostupným) kabelonován, vyprázdněn a potom odebrán před nahrazením nového pracovního uzlu za zadanou verzi Kubernetes. Současně se upgraduje více fondů agentů.
- Během upgradu dojde k dočasnému snížení kapacity clusteru, protože pody vyprázdněné z původního pracovního uzlu nebudou mít okamžitě nový uzel, na který se má přesunout. To může způsobit, že pody zadají čekající stav, pokud není dostatek kapacity. Proto je důležité navrhnout cluster tak, aby splňoval požadavky na kapacitu aplikace, zejména při upgradech bez přepětí.
- Tento proces se opakuje, dokud nebudou upgradovány všechny pracovní uzly v clusteru.
Poznámka:
Upgrade clusteru nevytvoří nové uzly a nahradí staré uzly, pokud verze image operačního systému (OS) a verze Kubernetes zůstanou stejné mezi sadami verzí. Toto chování je očekávané, protože upgrade může obsahovat pouze aktualizace pro verze doplňku, nikoli nové verze operačního systému nebo K8s. Vzhledem k tomu, že neexistuje žádný průběžný upgrade, není na uzlech žádný kabelon a vyprázdnění, takže k přerušení podů nedojde.
Důležité
Ujistěte se, že všechny PodDisruptionBudgets
(PDB) umožňují přesunutí alespoň jedné repliky podu najednou, jinak operace vyprázdnění nebo vyřazení selže.
Pokud operace vyprázdnění selže, operace upgradu selže také, aby se zajistilo, že aplikace nebudou přerušeny. Opravte, co způsobilo zastavení operace (tj. nesprávné soubory PDB, nedostatek kvóty atd.) a zkuste operaci znovu. Je také možné nakonfigurovat časový limit vyprázdnění na fond pracovních uzlů, po kterém se uzel odebere, i když pody ještě nedokončily vyprazdňování. To může zabránit blokování upgradů chybně nakonfigurovanými soubory PDB. Nastavení časového limitu vyprázdnění se konfiguruje v sekundách a výchozí hodnota je 1800.
- Upgradujte cluster pomocí
networkcloud kubernetescluster update
příkazu.
az networkcloud kubernetescluster update --name myNexusK8sCluster --resource-group myResourceGroup --kubernetes-version v1.26.3
- Pomocí příkazu ověřte, že upgrade proběhl úspěšně
show
.
az networkcloud kubernetescluster show --name myNexusK8sCluster --resource-group myResourceGroup --output json --query kubernetesVersion
Následující příklad výstupu ukazuje, že cluster teď běží v1.26.3:
"v1.26.3"
- Ujistěte se, že je cluster v pořádku.
az networkcloud kubernetescluster show --name myNexusK8sCluster --resource-group myResourceGroup --output table
Následující příklad výstupu ukazuje, že cluster je v pořádku:
Name ResourceGroup ProvisioningState DetailedStatus DetailedStatusMessage Location
------------------ --------------------- ------------------- ---------------- -------------------------------- --------------
myNexusK8sCluster myResourceGroup Succeeded Available Cluster is operational and ready southcentralus
Přizpůsobení upgradu nárůstu nebo nedostupnosti uzlu
Operátor Nexus ve výchozím nastavení konfiguruje upgrady tak, aby se přecházely s jedním dalším pracovním uzlem. Výchozí hodnota jednoho pro maximální nastavení přepětí umožňuje operátoru Nexus minimalizovat přerušení úloh vytvořením dalšího uzlu před kabelonem nebo vyprázdněním existujících aplikací, aby nahradil starší verzi uzlu. Maximální hodnotu přepětí je možné přizpůsobit na fond uzlů, aby se umožnil kompromis mezi rychlostí upgradu a přerušením upgradu. Když zvýšíte maximální hodnotu nárůstu, proces upgradu se dokončí rychleji. Pokud nastavíte velkou hodnotu maximálního nárůstu výkonu, může dojít k přerušení během procesu upgradu.
Například maximální hodnota nárůstu 100 % poskytuje nejrychlejší možný proces upgradu (zdvojnásobení počtu uzlů), ale zároveň způsobí, že se všechny uzly ve fondu uzlů vyprázdní současně. Pro testovací prostředí můžete chtít použít vyšší hodnotu, například tuto hodnotu. Pro fondy produkčních uzlů doporučujeme max_surge nastavení 33 %.
Není vždy vhodné provést upgrade prostřednictvím nárůstu, například v prostředích s omezenými prostředky. Upgrady můžou pokračovat i bez přepětí, kdy se pracovní uzel nejprve odebere a pak nahradí. To znamená, že není potřeba žádný další prostředek, ale vede k obdobím snížené kapacity, kdy pody nemusí být možné naplánovat na uzel. Tento typ upgradu se řídí podle fondu uzlů nastavením maximální nedostupnosti. Ve výchozím nastavení je maximální nedostupnost nastavená na hodnotu 0. To znamená, že maximálně 0 uzlů může být nedostupné, tj. tento typ upgradu se ve výchozím nastavení nestane.
Rozhraní API přijímá celočíselné hodnoty i procentuální hodnotu maximálního nárůstu a maximální nedostupnosti. Celé číslo, například 5 označuje pět uzlů, může být přecházené nebo nedostupné. Hodnota 50 % označuje hodnotu nárůstu/nedostupnosti poloviny aktuálního počtu uzlů ve fondu.
Jedna z maximálních nárůstů nebo maximálního nedostupnosti musí být alespoň 1 (nebo 1 %), jinak by nedošlo k žádnému mechanismu, pomocí kterého by mohlo být cluster upgradován. Procentuální hodnota se zaokrouhlí nahoru na nejbližší počet uzlů. Maximální nárůst i maximální nedostupnost je možné nastavit na maximálně 100 %. Pokud je maximální hodnota nárůstu vyšší než požadovaný počet uzlů, které se mají upgradovat, použije se počet uzlů, které se mají upgradovat, pro maximální hodnotu nárůstu.
Maximální nárůst a maximální nedostupnost je možné nakonfigurovat současně, v takovém případě bude upgrade pokračovat kombinací nárůstu a nedostupnosti.
Důležité
Standardní úlohy Kubernetes se nativně cyklicky cyklicky převádějí na nové uzly, když se vyprázdní z uzlů, které se odtrhávají. Mějte prosím na paměti, že služba Operator Nexus Kubernetes nemůže zajistit přísliby úloh pro nestandardní chování Kubernetes.
Další kroky
- Přečtěte si další informace o balíčcích verzí Nexus Kubernetes.