Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u knooppuntgroepen configureert voor automatisch inrichten van knooppunten (NAP) in Azure Kubernetes Service (AKS), waaronder SKU-selectors, resourcelimieten en prioriteitsgewichten. Het bevat ook voorbeelden om u te helpen aan de slag te gaan.
AKS Automatic bevat standaard NAP. Voor AKS Standard-clusters moet u NAP inschakelen voordat u de knooppuntgroepen configureert.
Hoe NAP VM's voor knooppuntgroepen selecteert
NAP maakt gebruik van SKU-vereisten voor virtuele machines (VM's) om de beste VM's te bepalen voor workloads die in behandeling zijn. U kunt het volgende configureren:
- SKU-families en specifieke exemplaartypen.
- Resourcelimieten en -prioriteiten.
- Spot- of on-demand exemplaren.
- Vereisten voor architectuur, GPU en andere mogelijkheden.
De NodePool-resource stelt beperkingen in voor de knooppunten die door NAP worden gemaakt en de pods die op die knooppunten draaien. Wanneer u NAP inschakelt terwijl de standaardconfiguratie van de knooppuntpool is ingesteld op Auto, maakt dit standaardresources NodePool. U kunt deze knooppuntgroepen wijzigen of extra knooppuntgroepen maken om aan uw workloadvereisten te voldoen.
Hoe NAP knooppuntgroepen evalueert en selecteert
Houd bij het configureren van NodePools NAP rekening met het volgende gedrag:
- NAP vereist ten minste één
NodePoolfunctie. - NAP evalueert elke geconfigureerde
NodePool. - NAP slaat over
NodePoolsmet tainten die niet worden getolereerd door een pod. - NAP past opstartvervuilingen toe op geconfigureerde knooppunten, maar vereist geen pod-tolerantie.
- NAP werkt het beste met onderling exclusieve
NodePools, waarvan de vereisten niet overlappen, zodat elke pod maar bij één pool past. Wanneer er meerdereNodePoolsovereenkomsten zijn, gebruikt NAP de overeenkomst met het hoogste gewicht.
Standaardconfiguratie van knooppuntgroep controleren
De configuratie van de standaard Karpenter NodePool met de naam default gemaakt door NAP is als volgt:
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 maakt ook een system-surge knooppuntgroep die linux AMD64-capaciteit op aanvraag biedt voor kritieke systeeminvoegtoepassingen. Wanneer een in behandeling zijnde pod de CriticalAddonsOnly=true:NoSchedule taint tolereert en overeenkomt met de poolvereisten, kan NAP een knooppunt inrichten vanuit deze pool. Nodes die door de pool zijn aangemaakt, hebben het label kubernetes.azure.com/mode: system.
De standaardknooppuntgroepen beheren
Wanneer u een nieuw AKS-cluster maakt dat is ingeschakeld met NAP met behulp van de Azure CLI, neemt u de --node-provisioning-default-pools vlag op om te bepalen of AKS de standaard NAP NodePoolsmaakt. U kunt deze vlag az aks update ook gebruiken wanneer u NAP inschakelt op een bestaand cluster.
De --node-provisioning-default-pools vlag accepteert de volgende waarden:
-
Auto(standaard): Maakt twee standaardNodePoolsvoor direct gebruik. -
None: Maakt geenNodePools. U moet uw eigen definiëren.
Waarschuwing
Als u de instelling wijzigt van Auto naar None op een bestaand cluster, worden de standaard niet automatisch verwijderd. Voordat u ze verwijdert, definieert u geschikte vervangingscapaciteit voor kritieke systeeminvoegtoepassingen. U moet de standaardinstelling NodePools handmatig verwijderen als u ze niet meer nodig hebt.
Configuratieopties voor knooppuntgroepen
In de volgende secties worden verschillende configuratieopties voor NodePools NAP beschreven, waaronder bekende labels en SKU-selectors, limieten voor knooppuntgroepen en gewichten van knooppuntgroepen.
Bekende labels en SKU-selectoren
Kubernetes definieert bekende labels die Azure implementeert. U kunt deze labels definiëren in de spec.requirements sectie van de NodePool API. NAP ondersteunt ook Azure-specifieke labels voor geavanceerdere planning.
De volgende tabel bevat de labels die u in de spec.requirements sectie van uw NodePool API kunt gebruiken om VM-kenmerken voor uw knooppunten te definiëren:
| Selector | Description | Example |
|---|---|---|
karpenter.sh/capacity-type |
VM-toewijzingstype (spot/on-demand) | Plek |
karpenter.azure.com/sku-family |
VM-SKU-serie | D, F, L, enz. |
karpenter.azure.com/sku-series |
VM-SKU-serie | Dpls_v6 |
karpenter.azure.com/sku-name |
Expliciete SKU-naam | Standard_A1_v2 |
karpenter.azure.com/sku-version |
SKU-versie (zonder 'v', kan 1 gebruiken) | 1, 2 |
karpenter.azure.com/sku-cpu |
Aantal CPU's in de virtuele machine | 16 |
karpenter.azure.com/sku-memory |
Geheugen in VM in MiB | 131072 |
karpenter.azure.com/sku-gpu-name |
GPU-naam | A100 |
karpenter.azure.com/sku-gpu-manufacturer |
GPU-fabrikant | nvidia |
karpenter.azure.com/sku-gpu-count |
Aantal GPU's per VM | 2 |
karpenter.azure.com/sku-networking-accelerated |
Of de Virtuele Machine versnelde netwerkfunctionaliteit heeft | [waar, onwaar] |
karpenter.azure.com/sku-storage-premium-capable |
Of de VM Premium IO-opslag ondersteunt | [waar, onwaar] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
Groottelimiet voor de tijdelijke besturingssysteemschijf (OS) in GB | 92 |
kubernetes.azure.com/sku-cpu |
Aantal CPU's in de virtuele machine | 16 |
kubernetes.azure.com/sku-memory |
Geheugen in VM in MiB | 131072 |
kubernetes.azure.com/cluster |
Naam van AKS-cluster | mijn-cluster |
kubernetes.azure.com/mode |
Modus van de knooppuntgroep | [systeem, gebruiker] |
kubernetes.azure.com/priority |
Prioriteit | [spot, standaard] |
kubernetes.azure.com/os-sku |
Besturingssysteem-SKU | [Ubuntu, AzureLinux] |
kubernetes.azure.com/fips_enabled |
Of FIPS ingeschakeld is | waar |
topology.kubernetes.io/zone |
Beschikbaarheidszone(s) | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os |
besturingssysteem | Linux |
kubernetes.io/arch |
CPU-architectuur (AMD64 of ARM64) | [amd64, arm64] |
De geheugenkiezerwaarden in deze tabel zijn de MiB-waarden die zijn gerapporteerd op door NAP gemaakte knooppunten. Voordat u een selector toevoegt, controleert u de labels op uw knooppunten om de waarde te bevestigen die door uw cluster wordt gebruikt.
Voorbeelden van SKU-familie
Met de karpenter.azure.com/sku-family selector kunt u zich richten op specifieke VM-families.
| Familie | Description |
|---|---|
| D-serie | Vm's voor algemeen gebruik met evenwichtige CPU-geheugenverhouding |
| F-serie | Voor rekenkracht geoptimaliseerde VM's met een hoge CPU-geheugenverhouding |
| E-serie | Voor geheugen geoptimaliseerde VM's voor geheugenintensieve toepassingen |
| L-serie | Voor opslag geoptimaliseerde VM's met hoge schijfdoorvoer |
| N-serie | MET GPU ingeschakelde VM's voor rekenintensieve workloads |
Voorbeeldconfiguratie met behulp van SKU-serie:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
VOORBEELD VAN GPU-SKU
Als u NVIDIA GPU-knooppunten wilt inrichten met NAP, maakt u een NodePool die VM-grootten met GPU-ondersteuning selecteert. In het volgende voorbeeld kan NAP NVIDIA GPU-SKU's uit de N-serie selecteren:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- N
- key: karpenter.azure.com/sku-gpu-manufacturer
operator: In
values:
- nvidia
Als u wilt dat AKS het NVIDIA-GPU-stuurprogramma, de apparaatplug-in, de metrische gegevens-exporteur van Data Center GPU Manager (DCGM) en GPU-statussignalen installeert en beheert op door NAP ingerichte GPU-knooppunten, configureer dan beheerde GPU in het genoemde AKSNodeClass. Zie Een door AKS beheerde GPU-knooppuntgroep maken voor meer informatie.
Voorbeelden van SKU-naam
Met de karpenter.azure.com/sku-name selector kunt u het exacte type VM-exemplaar opgeven.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
Voorbeelden van SKU-versies
De karpenter.azure.com/sku-version selector is gericht op specifieke generaties VAN VM-SKU's.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
Voorbeeld van beschikbaarheidszone
Met de topology.kubernetes.io/zone selector kunt u de beschikbaarheidszones voor uw knooppunten opgeven.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Opmerking
Als u VM-grootten wilt weergeven die beschikbaarheidszones in een regio ondersteunen, gebruikt u de az vm list-skus opdracht met de --location <region> --zone --output table parameters. Controleer of de geselecteerde VM-grootte ondersteuning biedt voor de zones in de NodePool vereiste.
Voorbeeld van architectuur
Met de kubernetes.io/arch selector kunt u de CPU-architectuur voor uw knooppunten opgeven. NAP ondersteunt zowel de amd64- als de arm64-knooppunten.
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
Voorbeeld van besturingssysteem
Met de kubernetes.io/os selector kunt u het besturingssysteem voor uw knooppunten opgeven.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
Voorbeeld van capaciteitstype
Met de karpenter.sh/capacity-type selector kunt u opgeven of u spot- of on-demand-exemplaren wilt gebruiken.
Opmerking
NAP geeft prioriteit aan Spot-exemplaren wanneer zowel Spot als On-demand worden opgegeven.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
Limieten voor knooppuntgroepen
NAP probeert standaard uw workloads te plannen binnen het Azure quotum dat u beschikbaar hebt. Voor een dynamische knooppuntgroep kunt u geaggregeerde resourcelimieten opgeven voor alle knooppunten die door die pool zijn ingericht. In het volgende voorbeeld beperkt cpu: "1000" u de pool tot 1000 vCPU-kernen en memory: 1000Gi beperkt u deze tot 1000 gibibytes aan geheugen:
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
Gewichten van knooppuntgroepen
Wanneer u meerdere knooppuntgroepen hebt gedefinieerd, kunt u een voorkeur instellen voor waar een workload moet worden gepland door het relatieve gewicht in de definities van uw knooppuntgroep te definiëren. Het weight veld accepteert een geheel getal van 1 tot en met 100 en hogere waarden geven een knooppuntgroep een hogere prioriteit. Als u weglaat weight, is de waarde effectief 0. Voorbeeld:
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
Statische knooppuntgroepen
Statische knooppuntgroepen onderhouden het vaste aantal NAP-ingerichte knooppunten dat in het replicas veld is opgegeven, ongeacht de vraag naar pods. Als u het aantal knooppunten wilt wijzigen, schaalt u de NodePool expliciet, bijvoorbeeld door nodepool static-node-pool --replicas=7 met kubectl scale te gebruiken. De optionele limits.nodes waarde beperkt expliciet schalen en tijdelijke capaciteit die is gemaakt tijdens het vervangen van knooppunten. Voor statische knooppuntgroepen nodes is dit het enige ondersteunde veld onder limits; u kunt geen CPU- of geheugenlimieten instellen.
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
Opmerking
Voor statische knooppuntgroepen kunt u alleen nodes instellen in het limits veld. U kunt geen resourcelimieten instellen of weight, en onderbrekingsconsolidatie is niet van toepassing. Nadat u een NodePoolhebt gemaakt, kunt u deze niet schakelen tussen statische en dynamische modi door het replicas veld toe te voegen of te verwijderen.
Volgende stappen
Zie de volgende artikelen voor meer informatie over automatische inrichting van knooppunten in AKS: