Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Den här artikeln beskriver hur du konfigurerar nodpooler för automatisk etablering av noder (NAP) i Azure Kubernetes Service (AKS), inklusive SKU-väljare, resursgränser och prioritetsvikter. Den innehåller också exempel som hjälper dig att komma igång.
Översikt över nodpooler i NAP
NAP använder SKU-krav för virtuella datorer (VM) för att bestämma de bästa virtuella datorerna för väntande arbetsbelastningar. Du kan konfigurera:
- SKU-familjer och specifika instanstyper.
- Resursgränser och prioriteringar.
- Spot- eller On-demand-instanser.
- Krav på arkitektur och funktioner.
Resursen NodePool anger begränsningar för de noder som NAP skapar och de poddar som körs på dessa noder. När du först installerar NAP skapas en standardinställning NodePool. Du kan ändra den här nodpoolen eller skapa extra nodpooler som passar dina arbetsbelastningskrav.
Viktiga beteenden hos NodePools i NAP
Tänk på följande när du konfigurerar NodePools för NAP:
- NAP kräver minst en
NodePoolför att fungera. - NAP utvärderar varje konfigurerad
NodePool. - NAP hoppar över
NodePoolsmed taints som inte tolereras av en podd. - NAP tillämpar startkontamineringar på etablerade noder men kräver inte podd tolerans.
- NAP fungerar bäst med ömsesidigt uteslutande
NodePools. Vid fleraNodePoolsmatchning använder den den med högsta vikt.
Granska standardkonfigurationen för nodpoolen
Konfigurationen av standard-Karpenter NodePool med namnet default som skapats av NAP är följande:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
expireAfter: Never
template:
spec:
nodeClassRef:
name: default
# 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
Den skapar också en system-surge nodpool som hjälper till med autoskalningen av systempoolnoder.
Kontrollera konfigurationen av standardnodpoolen när klustret skapas
När du skapar ett nytt AKS-kluster som är aktiverat med NAP med hjälp av Azure CLI kan du inkludera --node-provisioning-default-pools flaggan för att styra konfigurationen av standard-NAP.NodePool
Flaggan --node-provisioning-default-pools styr nap-standardkonfigurationen NodePool och accepterar följande värden:
-
Auto(standard): Skapar två standardvärdenNodePoolsför omedelbar användning. -
None: Skapar ingaNodePools. Du måste definiera själv.
Varning
Om du ändrar från Auto till None: Om du ändrar inställningen från Auto till None i ett befintligt kluster tas standardinställningen NodePools inte bort automatiskt. Du måste ta bort dem manuellt om du inte längre behöver dem.
Konfigurationsalternativ för nodpool
I följande avsnitt beskrivs olika konfigurationsalternativ för NodePools i NAP, inklusive välkända etiketter och SKU-väljare, nodpoolsgränser och nodpoolsvikter.
Välkända etiketter och SKU-väljare
Kubernetes definierar välkända etiketter som Azure implementerar. Du kan definiera dessa etiketter i spec.requirements avsnittet i API:et NodePool . NAP har också stöd för Azure-specifika etiketter för mer avancerad schemaläggning.
karpenter.azure.com SKU-väljare
I följande tabell visas de karpenter.azure.com SKU-väljare som du kan använda i spec.requirements-avsnittet i ditt NodePool API för att definiera VM-egenskaper för dina noder.
| Selector | Description | Example |
|---|---|---|
karpenter.azure.com/sku-family |
VM SKU-familj | D, F, L osv. |
karpenter.azure.com/sku-name |
Explicit SKU-namn | Standard_A1_v2 |
karpenter.azure.com/sku-version |
SKU-version (utan "v", kan använda 1) | 1, 2 |
karpenter.sh/capacity-type |
VM-allokeringstyp (spot/på begäran) | Fläck |
karpenter.azure.com/sku-cpu |
Antal processorer i den virtuella datorn | 16 |
karpenter.azure.com/sku-memory |
Minne i virtuell maskin i MiB | 131072 |
kubernetes.azure.com/sku-cpu |
Antal processorer i den virtuella datorn | 16 |
kubernetes.azure.com/sku-memory |
Minne i virtuell maskin i MiB | 131072 |
karpenter.azure.com/sku-gpu-name |
GPU-namn | A100 |
karpenter.azure.com/sku-gpu-manufacturer |
GPU-tillverkare | nvidia |
karpenter.azure.com/sku-gpu-count |
antal GPU:er per virtuell dator | 2 |
karpenter.azure.com/sku-networking-accelerated |
Om den virtuella datorn har accelererad nätverksprestanda | [sant, falskt] |
karpenter.azure.com/sku-storage-premium-capable |
Om den virtuella datorn stöder Premium IO-lagring | [sant, falskt] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
Storleksgräns för os-disken (Ephemeral Operating System) i Gb | 92 |
kubernetes.io välkända etiketter
I följande tabell listas de kubernetes.io välkända etiketter som du kan använda i spec.requirements-avsnittet av ditt NodePool-API för att definiera nodens egenskaper.
| Etikett | Description | Example |
|---|---|---|
topology.kubernetes.io/zone |
Tillgänglighetszoner | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os |
Operativsystem | Linux |
kubernetes.io/arch |
CPU-arkitektur (AMD64 eller ARM64) | [amd64, arm64] |
Exempel på SKU-familj
Med väljaren karpenter.azure.com/sku-family kan du rikta in dig på specifika VM-familjer.
| Familj | Description |
|---|---|
| D-serien | Allmänna virtuella datorer med balanserat förhållande mellan processor och minne |
| F-serien | Beräkningsoptimerade virtuella datorer med högt cpu-till-minne-förhållande |
| E-serien | Minnesoptimerade virtuella datorer för minnesintensiva program |
| L-serien | Lagringsoptimerade virtuella datorer med högt diskdataflöde |
| N-serien | GPU-aktiverade virtuella datorer för beräkningsintensiva arbetsbelastningar |
Exempelkonfiguration med SKU-familj:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
Exempel på SKU-namn
Med väljaren karpenter.azure.com/sku-name kan du ange den exakta typen av VM-instans.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
Exempel på SKU-version
Väljaren karpenter.azure.com/sku-version riktar sig till specifika generationer av VM-SKU:er.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
Exempel på tillgänglighetszon
Med väljaren topology.kubernetes.io/zone kan du ange tillgänglighetszonerna för dina noder.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Anmärkning
Du hittar tillgängliga zoner för din region med hjälp av az account list-locations --output table Azure CLI-kommandot.
Arkitekturexempel
Med väljaren kubernetes.io/arch kan du ange CPU-arkitekturen för dina noder. NAP stöder både amd64 noder och arm64 noder.
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
OS-exempel
Med väljaren kubernetes.io/os kan du ange operativsystemet för dina noder.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
Exempel på kapacitetstyp
Med väljaren karpenter.sh/capacity-type kan du ange om du vill använda Spot-instanser eller instanser på begäran.
Anmärkning
NAP prioriterar Spot-instanser när både Spot och On-demand anges.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
Nodpoolsgränser
Som standard försöker NAP schemalägga dina arbetsbelastningar inom den Azure-kvot som du har tillgänglig. Du kan också ange den övre gränsen för resurser som en nodpool använder genom att ange gränser i specifikationen för nodpoolen. Till exempel:
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
Vikter för nodpool
När du har definierat flera nodpooler kan du ange en inställning för var en arbetsbelastning ska schemaläggas genom att definiera den relativa vikten i nodpooldefinitionerna. Till exempel:
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
Nästa steg
Mer information om automatisk nodetablering i AKS finns i följande artiklar: