Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak skonfigurować pule węzłów dla automatycznej aprowizacji węzłów (NAP) w usłudze Azure Kubernetes Service (AKS), w tym selektory SKU, limity zasobów i wagi priorytetów. Zawiera również przykłady ułatwiające rozpoczęcie pracy.
Omówienie pul węzłów w NAP
NAP używa wymagań SKU maszyn wirtualnych, aby wybrać najlepsze maszyny wirtualne dla oczekujących obciążeń. Można skonfigurować:
- Rodziny jednostek SKU i określone typy wystąpień.
- Limity zasobów i priorytety.
- Wystąpienia typu spot lub na żądanie.
- Wymagania dotyczące architektury i możliwości.
Zasób NodePool ustawia ograniczenia dotyczące węzłów tworzonych przez NAP oraz zasobników (pods) uruchamianych na tych węzłach. Podczas pierwszej instalacji NAP zostanie utworzone domyślne NodePool ustawienie. Tę pulę węzłów można zmodyfikować lub utworzyć dodatkowe pule węzłów zgodnie z wymaganiami dotyczącymi obciążenia.
Kluczowe zachowania NodePools w ramach NAP
Podczas konfigurowania NodePools dla NAP, należy pamiętać o następujących zachowaniach:
- System NAP wymaga co najmniej jednego
NodePooldo działania. - NAP ocenia każdą skonfigurowaną
NodePool. - NAP pomija
NodePoolsz skażeniami, które nie są akceptowane przez zasobnik. - Funkcjonalność NAP stosuje startowe 'tainty' do zaaprowizowanych węzłów, ale nie wymaga 'toleracji' dla podów.
- Ochrona dostępu do sieci działa najlepiej z wzajemnie wykluczającymi się
NodePools. Kiedy występuje wiele dopasowańNodePools, wykorzystuje to z największą wagą.
Przejrzyj domyślną konfigurację puli węzłów
Konfiguracja domyślnego Karpentera NodePool o nazwie default utworzonej przez NAP jest następująca:
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
Tworzy również pulę węzłów system-surge, która ułatwia automatyczne skalowanie węzłów puli systemowej.
Kontrolowanie konfiguracji domyślnej puli węzłów podczas tworzenia klastra
Podczas tworzenia nowego klastra AKS z włączoną funkcją NAP przy użyciu interfejsu wiersza polecenia Azure, można dołączyć flagę --node-provisioning-default-pools do kontrolowania konfiguracji domyślnej funkcji NAP NodePool.
Flaga --node-provisioning-default-pools steruje domyślną konfiguracją NAP NodePool i akceptuje następujące wartości:
-
Auto(ustawienie domyślne): tworzy dwa standardyNodePoolsdo natychmiastowego użycia. -
None: nie tworzy żadnego elementuNodePools. Musisz zdefiniować własne.
Ostrzeżenie
Zmiana wartości z Auto na None: jeśli zmienisz ustawienie z Auto na None w istniejącym klastrze, domyślne NodePools nie zostaną automatycznie usunięte. Należy je usunąć ręcznie, jeśli nie są już potrzebne.
Opcje konfiguracji puli węzłów
W poniższych sekcjach opisano różne opcje konfiguracji dla NodePools w NAP, w tym powszechnie znane etykiety i selektory SKU, a także limity puli węzłów i wagi puli węzłów.
Dobrze znane etykiety i selektory SKU
Kubernetes określa dobrze znane etykiety, które są implementowane przez Azure. Te etykiety można zdefiniować w spec.requirements sekcji interfejsu NodePool API. NAP obsługuje także etykiety specyficzne dla Azure do bardziej zaawansowanego planowania.
karpenter.azure.com Selektory jednostek SKU
W poniższej tabeli wymieniono selektory SKU, których można użyć w sekcji karpenter.azure.com API, aby zdefiniować charakterystykę maszyn wirtualnych dla węzłów:
| Selector | Description | Example |
|---|---|---|
karpenter.azure.com/sku-family |
Rodzina jednostek SKU maszyny wirtualnej | D, F, L itp. |
karpenter.azure.com/sku-name |
Jawna nazwa jednostki SKU | Standard_A1_v2 |
karpenter.azure.com/sku-version |
Wersja SKU (bez użycia "v", można użyć 1) | 1, 2 |
karpenter.sh/capacity-type |
Typ alokacji maszyny wirtualnej (spot/na żądanie) | Punkt |
karpenter.azure.com/sku-cpu |
Liczba procesorów w maszynie wirtualnej | 16 |
karpenter.azure.com/sku-memory |
Pamięć w maszynie wirtualnej w MiB | 131072 |
kubernetes.azure.com/sku-cpu |
Liczba procesorów w maszynie wirtualnej | 16 |
kubernetes.azure.com/sku-memory |
Pamięć w maszynie wirtualnej w MiB | 131072 |
karpenter.azure.com/sku-gpu-name |
Nazwa procesora GPU | A100 |
karpenter.azure.com/sku-gpu-manufacturer |
Producent procesora GPU | nvidia |
karpenter.azure.com/sku-gpu-count |
Liczba procesorów GPU na maszynę wirtualną | 2 |
karpenter.azure.com/sku-networking-accelerated |
Czy maszyna wirtualna ma przyspieszoną sieć | [prawda, fałsz] |
karpenter.azure.com/sku-storage-premium-capable |
Czy maszyna wirtualna obsługuje magazyn I/O Premium | [prawda, fałsz] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
Limit rozmiaru dysku efemerycznego systemu operacyjnego (OS) w Gb | 92 |
kubernetes.io dobrze znane etykiety
Poniższa tabela wymienia kubernetes.io dobrze znane etykiety, których można użyć w sekcji spec.requirements w interfejsie NodePool API do zdefiniowania właściwości węzłów:
| Etykieta | Description | Example |
|---|---|---|
topology.kubernetes.io/zone |
Strefy dostępności | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os |
System operacyjny | linux |
kubernetes.io/arch |
Architektura procesora CPU (AMD64 lub ARM64) | [amd64, arm64] |
Przykłady rodziny jednostek SKU
Selektor karpenter.azure.com/sku-family umożliwia kierowanie określonych rodzin maszyn wirtualnych.
| Rodzina | Description |
|---|---|
| Seria D | Maszyny wirtualne ogólnego przeznaczenia ze zrównoważonym współczynnikiem użycia procesora CPU do pamięci |
| Seria F | Maszyny wirtualne zoptymalizowane pod kątem obliczeń z wysokim współczynnikiem użycia procesora CPU do pamięci |
| Seria E | Maszyny wirtualne zoptymalizowane pod kątem pamięci dla aplikacji intensywnie korzystających z pamięci |
| Seria L | Maszyny wirtualne zoptymalizowane do przechowywania z wysoką przepustowością dysku |
| Seria N | Maszyny wirtualne z obsługą procesora GPU na potrzeby obciążeń intensywnie korzystających z obliczeń |
Przykładowa konfiguracja przy użyciu rodziny jednostek SKU:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
Przykłady nazw SKU
Selektor karpenter.azure.com/sku-name pozwala określić dokładny typ maszyny wirtualnej.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
Przykłady wersji jednostki SKU
Selektor karpenter.azure.com/sku-version jest przeznaczony dla określonych generacji jednostek SKU maszyny wirtualnej.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
Przykład strefy dostępności
Selektor topology.kubernetes.io/zone umożliwia określenie stref dostępności dla węzłów.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Uwaga / Notatka
Można znaleźć dostępne strefy dla swojego regionu, korzystając z polecenia CLI platformy Azure az account list-locations --output table.
Przykład architektury
Selektor kubernetes.io/arch umożliwia określenie architektury CPU w węzłach. NAP obsługuje zarówno węzły amd64 i arm64.
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
Przykład systemu operacyjnego
Selektor kubernetes.io/os umożliwia określenie systemu operacyjnego dla węzłów.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
Przykład typu pojemności
Selektor karpenter.sh/capacity-type umożliwia określenie, czy mają być używane instancje typu Spot czy On-demand.
Uwaga / Notatka
NAP nadaje priorytet instancjom Spot, gdy określono zarówno instancje Spot, jak i na żądanie.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
Limity puli węzłów
Domyślnie NAP próbuje zaplanować obciążenia robocze w ramach dostępnego limitu przydziału Azure. Można również określić górny limit zasobów używanych przez pulę węzłów, określając limity w ramach specyfikacji puli węzłów. Na przykład:
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
Wagi puli węzłów
Jeśli zdefiniowano wiele pul węzłów, można ustawić preferencję, w której ma być zaplanowane obciążenie, definiując względną wagę w definicjach puli węzłów. Przykład:
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
Dalsze kroki
Aby uzyskać więcej informacji o automatycznym aprowizowaniu węzłów w AKS, zobacz następujące artykuły: