Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje, jak nakonfigurovat node pooly pro automatické zřizování uzlů (NAP) v Azure Kubernetes Service (AKS), včetně selektorů SKU, limitů prostředků a prioritních vah. Obsahuje také příklady, které vám pomůžou začít.
AKS Automatic zahrnuje ve výchozím nastavení architekturu NAP. U clusterů AKS úrovně Standard musíte před konfigurací jejich fondů uzlů povolit NAP.
Jak NAP vybírá virtuální počítače pro fondy uzlů
Architektura NAP používá požadavky na skladovou položku virtuálního počítače k rozhodování o tom, které virtuální počítače jsou nejvhodnější pro nevyřízené úlohy. Můžete nakonfigurovat:
- Rodiny SKU a konkrétní typy instancí.
- Limity a priority prostředků.
- Spotové instance či instance na vyžádání
- Požadavky na architekturu, GPU a další možnosti
Prostředek NodePool nastaví omezení na uzly, které vytváří NAP, i na pody spuštěné na těchto uzlech. Když povolíte NAP s konfigurací výchozí skupiny uzlů nastavenou na Auto, vytvoří se výchozí NodePool prostředky. Tyto fondy uzlů můžete upravit nebo vytvořit další fondy uzlů tak, aby vyhovovaly vašim požadavkům na úlohy.
Jak NAP vyhodnocuje a vybírá skupiny uzlů
Při konfiguraci NodePools pro NAP mějte na paměti následující chování:
- Architektura NAP vyžaduje alespoň jeden
NodePool, aby fungovala. - Architektura NAP vyhodnocuje každou nakonfigurovanou architekturu
NodePool. - NAP přeskočí
NodePoolss tainty, které pod netoleruje. - Architektura NAP aplikuje na zřízené uzly tainty po spuštění, ale nevyžaduje tolerance podů.
- NAP funguje nejlépe při použití vzájemně se vylučujících
NodePools, jejichž požadavky se nepřekrývají, takže každý pod patří pouze do jednoho fondu. Když se shoduje víceNodePools, NAP použije ten s nejvyšší vahou.
Kontrola výchozí konfigurace fondu uzlů
Konfigurace výchozího Karpenteru NodePool vytvořeného default NAP je následující:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
template:
spec:
nodeClassRef:
group: karpenter.azure.com
kind: AKSNodeClass
name: default
expireAfter: Never
# Requirements that constrain the parameters of provisioned nodes.
# These requirements are combined with pod.spec.affinity.nodeAffinity rules.
# Operators { In, NotIn, Exists, DoesNotExist, Gt, and Lt } are supported.
# https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- key: kubernetes.io/os
operator: In
values:
- linux
- key: karpenter.sh/capacity-type
operator: In
values:
- on-demand
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
NAP také vytváří fond uzlů system-surge, který poskytuje na vyžádání kapacitu Linux AMD64 pro kritické systémové doplňky. Když čekající pod toleruje poskvrnu CriticalAddonsOnly=true:NoSchedule a odpovídá požadavkům fondu, může NAP z tohoto fondu zřídit uzel. Uzly vytvořené fondem mají štítek kubernetes.azure.com/mode: system.
Řídit výchozí fondy uzlů
Když vytvoříte nový cluster AKS s povolenou architekturou NAP pomocí Azure CLI, zahrňte --node-provisioning-default-pools příznak, který určuje, jestli AKS vytvoří výchozí architekturu NAP NodePools. Tento příznak můžete také použít společně s az aks update, když povolujete NAP na existujícím clusteru.
Příznak --node-provisioning-default-pools přijímá následující hodnoty:
-
Auto(výchozí): Vytvoří dva standardyNodePoolspro okamžité použití. -
None: Nevytváří žádnéNodePools. Musíte definovat vlastní.
Výstraha
Změna z Auto na None: Pokud změníte nastavení z Auto na None existující cluster, výchozí nastavení NodePools se neodstraní automaticky. Než je odstraníte, definujte vhodnou náhradní kapacitu pro důležité doplňky systému. Výchozí nastavení NodePools je nutné odstranit ručně, pokud je už nepotřebujete.
Možnosti konfigurace fondu uzlů
Následující části popisují různé možnosti NodePools konfigurace architektury NAP, včetně známých popisků a selektorů skladových položek, limitů fondu uzlů a váhy fondu uzlů.
Známé popisky a selektory skladových položek
Kubernetes definuje známé štítky, které Azure implementuje. Tyto popisky můžete definovat v spec.requirements části NodePool rozhraní API. Architektura NAP také podporuje označení specifická pro Azure pro pokročilejší plánování.
Následující tabulka uvádí popisky, které můžete použít v spec.requirements části NodePool rozhraní API k definování charakteristik virtuálních počítačů pro uzly:
| Selector | Description | Example |
|---|---|---|
karpenter.sh/capacity-type |
Typ přidělování virtuálních počítačů (spotový/ na vyžádání) | Místo |
karpenter.azure.com/sku-family |
Řada specifikací virtuálního počítače | D, F, L atd. |
karpenter.azure.com/sku-series |
Řada SKU virtuálních počítačů | Dpls_v6 |
karpenter.azure.com/sku-name |
Explicitní název skladové položky | Standard_A1_v2 |
karpenter.azure.com/sku-version |
SKU verze (bez "v", může použít 1) | 1, 2 |
karpenter.azure.com/sku-cpu |
Počet procesorů ve virtuálním počítači | 16 |
karpenter.azure.com/sku-memory |
Velikost paměti ve virtuálním počítači v MiB | 131072 |
karpenter.azure.com/sku-gpu-name |
Název GPU | A100 |
karpenter.azure.com/sku-gpu-manufacturer |
Výrobce GPU | nvidia |
karpenter.azure.com/sku-gpu-count |
Počet GPU na virtuální počítač | 2 |
karpenter.azure.com/sku-networking-accelerated |
Jestli má virtuální počítač akcelerované síťové služby | [pravda, nepravda] |
karpenter.azure.com/sku-storage-premium-capable |
Jestli virtuální počítač podporuje úložiště Premium IO | [pravda, nepravda] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
Omezení velikosti dočasného disku s operačním systémem v GB | 92 |
kubernetes.azure.com/sku-cpu |
Počet procesorů ve virtuálním počítači | 16 |
kubernetes.azure.com/sku-memory |
Velikost paměti ve virtuálním počítači v MiB | 131072 |
kubernetes.azure.com/cluster |
Název clusteru AKS | my-cluster |
kubernetes.azure.com/mode |
Režim skupiny uzlů | [system, user] |
kubernetes.azure.com/priority |
Priorita | [bod, běžný] |
kubernetes.azure.com/os-sku |
Skladová položka operačního systému | [Ubuntu, AzureLinux] |
kubernetes.azure.com/fips_enabled |
Jestli je povolený protokol FIPS | true |
topology.kubernetes.io/zone |
Zóny dostupnosti | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os |
Operační systém | Linux |
kubernetes.io/arch |
Architektura procesoru (AMD64 nebo ARM64) | [amd64, arm64] |
Hodnoty selektoru paměti v této tabulce jsou hodnoty MiB hlášené na uzlech vytvořených architekturou NAP. Než přidáte selektor, zkontrolujte popisky na uzlech a ověřte hodnotu používanou clusterem.
Příklady skupin skladových položek
Selektor karpenter.azure.com/sku-family umožňuje cílit na konkrétní rodiny virtuálních počítačů.
| Rodina | Description |
|---|---|
| řada D | Virtuální počítače pro obecné účely s vyváženým poměrem procesoru k paměti |
| Řada F | Virtuální počítače optimalizované pro výpočty s vysokým poměrem procesoru k paměti |
| Řada E | Virtuální počítače optimalizované pro paměť pro aplikace náročné na paměť |
| Řada L | Virtuální počítače optimalizované pro úložiště s vysokou propustností disku |
| N-series | Virtuální počítače s podporou GPU pro úlohy náročné na výpočetní výkon |
Příklad konfigurace pomocí řady skladových položek:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
Příklad skladové položky GPU
Pokud chcete pomocí NAP zřídit uzly GPU NVIDIA, vytvořte NodePool, který vybírá velikosti virtuálních počítačů s podporou GPU. Následující příklad umožňuje NAP vybrat položky SKU grafických procesorů NVIDIA řady N:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- N
- key: karpenter.azure.com/sku-gpu-manufacturer
operator: In
values:
- nvidia
Pokud chcete, aby AKS na uzlech GPU zřízených pomocí NAP instalovala a spravovala ovladač NVIDIA GPU, modul plug-in zařízení, exportér metrik Data Center GPU Manager (DCGM) a signály o stavu GPU, nakonfigurujte spravované GPU v odkazované položce AKSNodeClass. Další informace najdete v tématu Vytvoření fondu uzlů GPU spravovaných službou AKS.
Příklady názvů skladových položek
Selektor karpenter.azure.com/sku-name umožňuje zadat přesný typ instance virtuálního počítače.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
Příklady verzí skladové položky
Selektor karpenter.azure.com/sku-version cílí na konkrétní generace skladových položek virtuálních počítačů.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
Příklad zóny dostupnosti
Selektor topology.kubernetes.io/zone umožňuje určit zóny dostupnosti pro vaše uzly.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Poznámka:
Pokud chcete zobrazit seznam velikostí virtuálních počítačů, které podporují zóny dostupnosti v určité oblasti, použijte az vm list-skus příkaz s --location <region> --zone --output table parametry. Ověřte, že vybraná velikost virtuálního počítače podporuje zóny v NodePool požadavku.
Příklad architektury
Selektor kubernetes.io/arch umožňuje určit architekturu procesoru pro uzly. Nap podporuje jak amd64 a arm64 uzly.
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
Příklad operačního systému
Selektor kubernetes.io/os umožňuje zadat operační systém pro vaše uzly.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
Příklad typu kapacity
Selektor karpenter.sh/capacity-type umožňuje určit, jestli se mají používat spotové instance nebo instance na vyžádání.
Poznámka:
NAP určuje prioritu spotových instancí, když jsou specifikovány jak spotové instance, tak instance na vyžádání.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
Omezení fondu uzlů
Ve výchozím nastavení se NAP pokusí naplánovat vaše úlohy v rámci Azure quota, kterou máte k dispozici. U dynamického fondu uzlů můžete zadat agregované limity prostředků napříč všemi uzly zřízenými tímto fondem. V následujícím příkladu cpu: "1000" omezuje fond na 1 000 jader virtuálních procesorů a memory: 1000Gi omezuje ho na 1 000 gibibajtů paměti:
spec:
# Resource limits constrain the total size of the node pool.
# Limits prevent Node Auto Provisioning from creating new instances once the limit is exceeded.
limits:
cpu: "1000"
memory: 1000Gi
Váhy skupiny uzlů
Pokud máte definovaných více fondů uzlů, můžete nastavit předvolbu pro to, kde má být úloha naplánována definováním relativní váhy v definicích fondu uzlů. Pole weight přijímá celé číslo od 1 do 100 a vyšší hodnoty dávají fondu uzlů vyšší prioritu. Pokud vynecháte weight, jeho hodnota je účinně 0. Například:
spec:
# Priority given to the node pool when the scheduler considers which to select.
# Higher weights indicate higher priority when comparing node pools.
# Specifying no weight is equivalent to specifying a weight of 0.
weight: 10
Fondy statických uzlů
Statické fondy uzlů udržují pevný počet uzlů zřízených službou NAP zadaný v poli replicas, bez ohledu na požadavky podů. Pokud chcete změnit počet uzlů, explicitně škálujte NodePool, například pomocí .kubectl scalenodepool static-node-pool --replicas=7 Volitelná limits.nodes hodnota omezuje explicitní škálování a dočasnou kapacitu vytvořenou během nahrazení uzlu. U fondů statických uzlů nodes je jediným podporovaným polem v části limits; nemůžete nastavit limity procesoru nebo paměti.
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: static-node-pool
spec:
replicas: 5
template:
spec:
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
- eastus-3
limits:
nodes: 10
Poznámka:
U fondů statických uzlů můžete nastavit pouze nodes v limits poli. Nemůžete nastavit limity prostředků ani weight a funkce konsolidace narušení se nepoužije. Po vytvoření NodePoolnemůžete přepínat mezi statickými a dynamickými režimy přidáním nebo odebráním replicas pole.
Další kroky
Pro více informací o automatickém zřizování uzlů v AKS si přečtěte následující články: