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.
Overzicht van knooppuntgroepen in NAP
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 en 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 voor het eerst installeert, wordt er een standaardwaarde NodePoolgemaakt. U kunt deze knooppuntgroep wijzigen of extra knooppuntgroepen maken om aan uw workloadvereisten te voldoen.
Belangrijkste gedragingen van NodePools in NAP
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 wederzijds uitsluiten
NodePools. Wanneer er meerdereNodePoolsovereenkomsten zijn, wordt degene met het hoogste gewicht gebruikt.
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:
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
Er wordt ook een system-surge knooppuntgroep gemaakt, waarmee systeemgroepknooppunten automatisch kunnen worden geschaald.
Configuratie van standaardknooppuntgroep beheren tijdens het maken van het cluster
Wanneer u een nieuw AKS-cluster maakt dat is ingeschakeld met NAP met behulp van de Azure CLI, kunt u de --node-provisioning-default-pools vlag opnemen om de configuratie van het standaard NAP NodePoolte beheren.
De --node-provisioning-default-pools vlag bepaalt de standaard NAP-configuratie NodePool en 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. U moet ze 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.
karpenter.azure.com SKU-selectors
De volgende tabel bevat de karpenter.azure.com SKU-selectors 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.azure.com/sku-family |
VM-SKU-serie | D, F, L, enz. |
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.sh/capacity-type |
VM-toewijzingstype (spot/on-demand) | Plek |
karpenter.azure.com/sku-cpu |
Aantal CPU's in de virtuele machine | 16 |
karpenter.azure.com/sku-memory |
Geheugen in VM in MiB | 131072 |
kubernetes.azure.com/sku-cpu |
Aantal CPU's in de virtuele machine | 16 |
kubernetes.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.io bekende labels
De volgende tabel bevat de kubernetes.io bekende labels die u in de spec.requirements sectie van uw NodePool API kunt gebruiken om knooppuntkenmerken voor uw knooppunten te definiëren:
| Etiket | Description | Example |
|---|---|---|
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] |
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
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
U vindt beschikbare zones voor uw regio met behulp van de az account list-locations --output table Azure CLI-opdracht.
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. U kunt ook de bovengrens opgeven voor resources die door een knooppuntgroep worden gebruikt door limieten op te geven binnen de specificatie van de knooppuntgroep. Bijvoorbeeld:
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
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 uw knooppuntgroepdefinities te definiëren. 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
Volgende stappen
Zie de volgende artikelen voor meer informatie over automatische inrichting van knooppunten in AKS: