Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come configurare i pool di nodi per il provisioning automatico dei nodi nel servizio Azure Kubernetes, inclusi i selettori di SKU, i limiti delle risorse e i pesi di priorità. Fornisce anche esempi che consentono di iniziare.
Panoramica dei pool di nodi in NAP (Network Access Protection)
NAP utilizza i requisiti delle SKU delle macchine virtuali per decidere le macchine virtuali migliori per i carichi di lavoro pendenti. È possibile configurare:
- Famiglie di SKU e tipi di istanza specifici.
- Limiti e priorità delle risorse.
- Istanze spot o su richiesta.
- Requisiti di architettura e funzionalità.
La risorsa NodePool imposta vincoli sui nodi che NAP crea e sui pod che vengono eseguiti in tali nodi. Quando si installa Nap per la prima volta, viene creato un valore predefinito NodePool. È possibile modificare questo pool di nodi o creare pool di nodi aggiuntivi in base ai requisiti del carico di lavoro.
Comportamenti principali di NodePools in Protezione accesso alla rete (NAP)
Quando si configura NodePools per Protezione accesso alla rete, tenere presenti i comportamenti seguenti:
- NAP richiede almeno un
NodePoolper funzionare. - NAP valuta ogni
NodePoolconfigurato. - Protezione accesso alla rete ignora
NodePoolsche hanno taint non tollerati da un pod. - NAP applica i taint di avvio ai nodi di cui è stato effettuato il provisioning, ma non richiede la tolleranza dei pod.
- Protezione accesso alla rete funziona meglio con
NodePoolsmutuamente esclusivi. Quando piùNodePoolscorrispondono, utilizza quella con il peso più alto.
Esaminare la configurazione predefinita del pool di nodi
La configurazione dell'istanza predefinita di Karpenter NodePool denominata default creata da NAP è la seguente:
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
Crea anche un system-surge pool di nodi, che consente di ridimensionare automaticamente i nodi del pool di sistema.
Controllare la configurazione del pool di nodi predefinito durante la creazione del cluster
Quando si crea un nuovo cluster del servizio Azure Kubernetes abilitato con Protezione accesso alla rete tramite l'interfaccia della riga di comando di Azure, è possibile includere il flag --node-provisioning-default-pools per controllare la configurazione della Protezione accesso alla rete predefinita NodePool.
Il --node-provisioning-default-pools flag controlla la configurazione predefinita di NAP NodePool e accetta i seguenti valori:
-
Auto(impostazione predefinita): crea due standardNodePoolsper l'uso immediato. -
None: non crea alcun oggettoNodePools. È necessario definire il proprio.
Avvertimento
Passaggio da Auto a None: se si modifica l'impostazione da Auto a None in un cluster esistente, il valore predefinito NodePools non viene eliminato automaticamente. È necessario eliminarli manualmente se non sono più necessari.
Opzioni di configurazione del pool di nodi
Le sezioni seguenti illustrano varie opzioni di configurazione per NodePools in NAP, tra cui etichette comunemente note e selettori SKU, limiti del pool di nodi, e pesi del pool di nodi.
Etichette conosciute e selettori SKU
Kubernetes definisce etichette note implementate da Azure. È possibile definire queste etichette nella spec.requirements sezione dell'API NodePool . Anche NAP supporta etichette specifiche di Azure per una pianificazione più avanzata.
karpenter.azure.com Selettori SKU
La tabella seguente elenca i karpenter.azure.com selettori di SKU che è possibile usare nella sezione dell'API spec.requirements per definire le caratteristiche della NodePool macchina virtuale per i nodi:
| Selector | Description | Example |
|---|---|---|
karpenter.azure.com/sku-family |
Famiglia di SKU VM | D, F, L, ecc. |
karpenter.azure.com/sku-name |
Nome dello SKU esplicito | Standard_A1_v2 |
karpenter.azure.com/sku-version |
Versione SKU (senza "v", può usare 1) | 1, 2 |
karpenter.sh/capacity-type |
Tipo di allocazione della macchina virtuale (spot/su richiesta) | Spot (Contante) |
karpenter.azure.com/sku-cpu |
Numero di CPU nella macchina virtuale | 16 |
karpenter.azure.com/sku-memory |
Memoria nella macchina virtuale in MiB | 131072 |
kubernetes.azure.com/sku-cpu |
Numero di CPU nella macchina virtuale | 16 |
kubernetes.azure.com/sku-memory |
Memoria nella macchina virtuale in MiB | 131072 |
karpenter.azure.com/sku-gpu-name |
Nome GPU | A100 |
karpenter.azure.com/sku-gpu-manufacturer |
Produttore GPU | nvidia |
karpenter.azure.com/sku-gpu-count |
Conteggio GPU per macchina virtuale | 2 |
karpenter.azure.com/sku-networking-accelerated |
Indica se la macchina virtuale ha accelerato la rete | [vero, falso] |
karpenter.azure.com/sku-storage-premium-capable |
Indica se la macchina virtuale supporta l'archiviazione I/O Premium | [vero, falso] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
Limite di dimensioni per il disco del sistema operativo temporaneo in Gb | 92 |
kubernetes.io etichette note
La tabella seguente elenca le kubernetes.io etichette ben note che è possibile usare nella sezione spec.requirements della tua API per definire le caratteristiche dei nodi:
| Etichetta | Description | Example |
|---|---|---|
topology.kubernetes.io/zone |
Zone di disponibilità | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os |
Sistema operativo | linux |
kubernetes.io/arch |
Architettura della CPU (AMD64 o ARM64) | [amd64, arm64] |
Esempi di famiglia di SKU
Il karpenter.azure.com/sku-family selettore consente di specificare le famiglie di macchine virtuali specifiche.
| Famiglia | Description |
|---|---|
| Serie D | Macchine virtuali per utilizzo generico con rapporto cpu-memoria bilanciato |
| Serie F | Macchine virtuali ottimizzate per il calcolo con rapporto elevato tra CPU e memoria |
| Serie E | Macchine virtuali ottimizzate per la memoria per applicazioni a elevato utilizzo di memoria |
| Serie L | Macchine virtuali ottimizzate per l'archiviazione con velocità effettiva elevata del disco |
| Serie N | Macchine virtuali abilitate per GPU per carichi di lavoro a elevato utilizzo di calcolo |
Configurazione di esempio con la famiglia di SKU:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
Esempi di nomi SKU
Il karpenter.azure.com/sku-name selettore consente di specificare il tipo esatto di istanza della macchina virtuale.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
Esempi di versione SKU
Il karpenter.azure.com/sku-version selettore è destinato a generazioni specifiche di SKU di MACCHINE virtuali.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
Esempio di zona di disponibilità
Il topology.kubernetes.io/zone selettore consente di specificare le zone di disponibilità per i nodi.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Annotazioni
È possibile trovare le zone disponibili per la tua regione usando il comando Azure CLI az account list-locations --output table.
Esempio di architettura
Il kubernetes.io/arch selettore consente di specificare l'architettura della CPU per i nodi. NAP supporta sia amd64 che arm64 i nodi.
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
Esempio di sistema operativo
Il kubernetes.io/os selettore consente di specificare il sistema operativo per i nodi.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
Esempio di tipo di capacità
Il karpenter.sh/capacity-type selettore consente di specificare se usare istanze Spot o On demand.
Annotazioni
Protezione accesso alla rete assegna priorità alle istanze spot quando vengono specificate sia le istanze spot sia le istanze su richiesta.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
Limiti del pool di nodi
Per impostazione predefinita, NAP tenta di pianificare i carichi di lavoro entro la quota di Azure disponibile. È anche possibile specificare il limite massimo di risorse usate da un pool di nodi specificando i limiti all'interno della specifica del pool di nodi. Per esempio:
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
Pesi del pool di nodi
Dopo aver definito più pool di nodi, è possibile impostare una preferenza per la pianificazione di un carico di lavoro definendo il peso relativo nelle definizioni del pool di nodi. Per esempio:
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
Passaggi successivi
Per altre informazioni sul provisioning automatico dei nodi in AKS (Azure Kubernetes Service), vedere gli articoli seguenti: