Sdílet prostřednictvím


Konfigurace sad uzlů pro automatické poskytování uzlů (NAP) ve službě Azure Kubernetes Service (AKS)

Tento článek vysvětluje, jak nakonfigurovat fondy uzlů pro automatické zřizování uzlů (NAP) ve službě 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.

Přehled poolů uzlů v NAP

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 a možnosti

Prostředek NodePool nastaví omezení na uzly, které vytváří NAP, i na pody spuštěné na těchto uzlech. Při první instalaci architektury NAP se vytvoří výchozí nastavení NodePool. Tento fond uzlů můžete upravit nebo vytvořit další fondy uzlů tak, aby vyhovovaly vašim požadavkům na úlohy.

Klíčové chování NodePools v NAP

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čí NodePools s 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 s vzájemně se vylučujícím NodePools. Pokud se shoduje více položek reprezentovaných NodePools, použije se ta s nejvyšší váhou.

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:
        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

Vytvoří také system-surge uzlový fond, který pomáhá automaticky škálovat uzly systémového fondu.

Řízení konfigurace výchozího fondu uzlů během vytváření clusteru

Když vytvoříte nový cluster AKS s povolenou architekturou NAP pomocí Azure CLI, můžete zahrnout příznak --node-provisioning-default-pools, abyste mohli řídit konfiguraci výchozího NAP NodePool.

Příznak --node-provisioning-default-pools řídí výchozí konfiguraci architektury NAP NodePool a přijímá následující hodnoty:

  • Auto (výchozí): Vytvoří dva standardy NodePools pro 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. Pokud je už nepotřebujete, musíte je odstranit ručně.

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. NAP také podporuje štítky specifické pro Azure pro pokročilé plánování.

karpenter.azure.com Selektory skladových položek

Následující tabulka uvádí karpenter.azure.com selektory skladových položek, 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.azure.com/sku-family Řada specifikací virtuálního počítače D, F, L atd.
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.sh/capacity-type Typ přidělování virtuálních počítačů (spotový/ na vyžádání) Skvrna
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
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
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 (OS) v Gb 92

kubernetes.io dobře známé štítky

Následující tabulka uvádí kubernetes.io známé štítky, které můžete použít v spec.requirements části NodePool rozhraní API k definování charakteristik pro vaše uzly:

Označení Description Example
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]

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ří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:

Dostupné zóny pro vaši oblast najdete pomocí az account list-locations --output table příkazu Azure CLI.

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 pokouší naplánovat vaše úlohy v rámci dostupné kvóty Azure. Můžete také určit horní limit prostředků, které fond uzlů používá, zadáním limitů v rámci specifikace fondu uzlů. Například:

spec:
  # Resource limits constrain the total size of the cluster.
  # 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, kde by měla být úloha naplánována definováním relativní váhy v definicích fondu uzlů. 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

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: