Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara mengonfigurasi kumpulan simpul untuk provisi otomatis simpul (NAP) di Azure Kubernetes Service (AKS), termasuk pemilih SKU, batas sumber daya, dan bobot prioritas. Ini juga menyediakan contoh untuk membantu Anda memulai.
AKS Otomatis menyertakan NAP secara default. Untuk kluster Standar AKS, Anda harus mengaktifkan NAP sebelum mengonfigurasi kumpulan simpulnya.
Cara NAP memilih VM untuk kumpulan simpul
NAP menggunakan persyaratan SKU komputer virtual (VM) untuk memutuskan VM terbaik untuk beban kerja yang tertunda. Anda dapat mengonfigurasi:
- Keluarga SKU dan jenis instans tertentu.
- Batas dan prioritas sumber daya.
- Instans Spot atau Sesuai permintaan.
- Arsitektur, GPU, dan persyaratan kemampuan lainnya.
Sumber daya NodePool menetapkan batasan pada simpul yang dibuat oleh NAP dan pod yang berjalan pada simpul tersebut. Saat Anda mengaktifkan NAP dengan konfigurasi kumpulan simpul default yang diatur ke Auto, ini akan membuat sumber daya defaultNodePool. Anda dapat memodifikasi kumpulan simpul ini atau membuat kumpulan simpul tambahan agar sesuai dengan persyaratan beban kerja Anda.
Cara NAP mengevaluasi dan memilih kumpulan simpul
Saat mengonfigurasi NodePools untuk NAP, ingatlah perilaku berikut:
- NAP memerlukan setidaknya satu
NodePooluntuk berfungsi. - NAP mengevaluasi setiap
yang dikonfigurasi. - NAP melewatkan
NodePoolsdengan taint yang tidak ditoleransi oleh pod. - NAP menerapkan taint startup ke simpul yang disediakan tetapi tidak memerlukan toleransi pod.
- NAP berfungsi paling baik dengan
NodePoolsyang saling eksklusif, yang persyaratannya tidak saling tumpang tindih sehingga setiap pod hanya cocok dengan satu pool. Saat ada beberapaNodePoolsyang cocok, NAP menggunakan yang memiliki bobot tertinggi.
Meninjau konfigurasi kumpulan simpul default
Konfigurasi Karpenter NodePool default bernama default dibuat oleh NAP adalah sebagai berikut:
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 juga membuat system-surge pool node yang menyediakan kapasitas Linux AMD64 sesuai kebutuhan untuk add-on sistem penting. Ketika pod yang tertunda mentolerir CriticalAddonsOnly=true:NoSchedule taint dan cocok dengan persyaratan kumpulan, NAP dapat menyediakan simpul dari kumpulan ini. Node yang dibuat oleh pool memiliki label kubernetes.azure.com/mode: system.
Mengontrol kumpulan simpul default
Saat Anda membuat kluster AKS baru dengan NAP yang diaktifkan menggunakan Azure CLI, sertakan bendera --node-provisioning-default-pools untuk mengontrol apakah AKS membuat NAP default NodePools. Anda juga dapat menggunakan flag ini dengan az aks update saat mengaktifkan NAP pada cluster yang sudah ada.
Bendera --node-provisioning-default-pools menerima nilai berikut:
-
Auto(default): Membuat dua standarNodePoolsuntuk penggunaan segera. -
None: Tidak membuatNodePoolsapapun. Anda harus menetapkan sendiri.
Peringatan
Mengubah dari Auto ke None: Jika Anda mengubah pengaturan dari Auto ke None pada kluster yang ada, default NodePools tidak dihapus secara otomatis. Sebelum Anda menghapusnya, tentukan kapasitas penggantian yang sesuai untuk add-on sistem penting. Anda harus menghapus default NodePools secara manual jika Anda tidak lagi membutuhkannya.
Opsi konfigurasi kumpulan simpul
Bagian berikut menguraikan berbagai opsi konfigurasi untuk NodePools di NAP, termasuk label dan pemilih SKU terkenal, batas kumpulan simpul, dan bobot kumpulan simpul.
Label dan pemilih SKU terkenal
Kubernetes mendefinisikan label yang dikenal dengan baik yang Azure terapkan. Anda dapat menentukan label ini di bagian spec.requirementsNodePool API. NAP juga mendukung label khusus Azure untuk penjadwalan yang lebih canggih.
Tabel berikut mencantumkan label yang dapat Anda gunakan di bagian spec.requirements API Anda NodePool untuk menentukan karakteristik VM untuk simpul Anda:
| Selector | Description | Example |
|---|---|---|
karpenter.sh/capacity-type |
Jenis alokasi VM (Spot / Sesuai permintaan) | Tempat |
karpenter.azure.com/sku-family |
Keluarga VM SKU | D, F, L, dll. |
karpenter.azure.com/sku-series |
Seri VM SKU | Dpls_v6 |
karpenter.azure.com/sku-name |
Nama SKU eksplisit | Standard_A1_v2 |
karpenter.azure.com/sku-version |
Versi SKU (tanpa "v", dapat menggunakan 1) | 1, 2 |
karpenter.azure.com/sku-cpu |
Jumlah CPU dalam VM | 16 |
karpenter.azure.com/sku-memory |
Memori dalam VM di MiB | 131072 |
karpenter.azure.com/sku-gpu-name |
Nama GPU | A100 |
karpenter.azure.com/sku-gpu-manufacturer |
Produsen GPU | nvidia |
karpenter.azure.com/sku-gpu-count |
Jumlah GPU per VM | 2 |
karpenter.azure.com/sku-networking-accelerated |
Apakah VM telah mempercepat jaringan | [benar, salah] |
karpenter.azure.com/sku-storage-premium-capable |
Apakah VM mendukung penyimpanan IO Premium | [benar, salah] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
Batas ukuran untuk disk sistem operasi (OS) ephemeral dalam GB | 92 |
kubernetes.azure.com/sku-cpu |
Jumlah CPU dalam VM | 16 |
kubernetes.azure.com/sku-memory |
Memori dalam VM di MiB | 131072 |
kubernetes.azure.com/cluster |
Nama kluster AKS | my-cluster |
kubernetes.azure.com/mode |
Mode kumpulan simpul | [sistem, pengguna] |
kubernetes.azure.com/priority |
Prioritas | [titik, reguler] |
kubernetes.azure.com/os-sku |
Sistem operasi SKU | [Ubuntu, AzureLinux] |
kubernetes.azure.com/fips_enabled |
Apakah FIPS diaktifkan | true |
topology.kubernetes.io/zone |
Zona ketersediaan | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os |
Sistem operasi | linux |
kubernetes.io/arch |
Arsitektur CPU (AMD64 atau ARM64) | [amd64, arm64] |
Nilai pemilih memori dalam tabel ini adalah nilai MiB yang dilaporkan pada node yang dibuat oleh NAP. Sebelum Anda menambahkan pemilih, periksa label pada simpul Anda untuk mengonfirmasi nilai yang digunakan oleh kluster Anda.
Contoh keluarga SKU
Pemilih karpenter.azure.com/sku-family memungkinkan Anda menargetkan keluarga VM tertentu.
| Keluarga | Description |
|---|---|
| Seri D | VM tujuan umum dengan rasio CPU-ke-memori yang seimbang |
| Seri F | VM yang dioptimalkan komputasi dengan rasio CPU-ke-memori tinggi |
| Seri E | VM yang dioptimalkan memori untuk aplikasi intensif memori |
| Seri L | VM yang dioptimalkan untuk penyimpanan dengan throughput disk yang tinggi |
| Seri N | VM berkemampuan GPU untuk beban kerja intensif komputasi |
Contoh konfigurasi menggunakan keluarga SKU:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
Contoh SKU GPU
Untuk memprovisikan simpul GPU NVIDIA dengan NAP, buat NodePool yang memilih ukuran VM yang mendukung GPU. Contoh berikut memungkinkan NAP untuk memilih SKU GPU NVIDIA seri N:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- N
- key: karpenter.azure.com/sku-gpu-manufacturer
operator: In
values:
- nvidia
Jika Anda ingin AKS menginstal dan mengelola driver GPU NVIDIA, plugin perangkat, pengekspor metrik Data Center GPU Manager (DCGM), dan sinyal kesehatan GPU pada node GPU yang diprovisikan oleh NAP, konfigurasikan GPU terkelola pada AKSNodeClass yang dirujuk. Untuk informasi selengkapnya, lihat Membuat kumpulan simpul GPU yang dikelola AKS.
Contoh nama SKU
Pemilih karpenter.azure.com/sku-name memungkinkan Anda menentukan jenis instans VM yang tepat.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
Contoh versi SKU
Pemilih karpenter.azure.com/sku-version menargetkan SKU VM generasi tertentu.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
Contoh zona ketersediaan
Pemilih topology.kubernetes.io/zone memungkinkan Anda menentukan zona ketersediaan untuk simpul Anda.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Nota
Untuk menampilkan ukuran VM yang mendukung zona ketersediaan di wilayah, gunakan perintah az vm list-skus dengan parameter --location <region> --zone --output table. Konfirmasikan bahwa ukuran VM yang Anda pilih mendukung zona dalam NodePool persyaratan.
Contoh arsitektur
Pemilih kubernetes.io/arch memungkinkan Anda menentukan arsitektur CPU untuk simpul Anda. NAP mendukung simpul amd64 dan arm64 .
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
Contoh OS
Pemilih kubernetes.io/os memungkinkan Anda menentukan sistem operasi untuk simpul Anda.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
Contoh jenis kapasitas
Pemilih karpenter.sh/capacity-type memungkinkan Anda menentukan apakah akan menggunakan instans Spot atau Sesuai permintaan.
Nota
NAP memprioritaskan instans Spot ketika baik Spot maupun On-demand ditentukan.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
Batas kumpulan simpul
Secara default, NAP mencoba menjadwalkan beban kerja Anda dalam kuota Azure yang tersedia. Untuk kumpulan simpul dinamis, Anda dapat menentukan batas sumber daya agregat di semua simpul yang disediakan oleh kumpulan tersebut. Dalam contoh berikut, cpu: "1000" membatasi kumpulan hingga 1.000 inti vCPU, dan memory: 1000Gi membatasinya hingga 1.000 gibibyte memori:
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
Bobot kumpulan simpul
Ketika Anda memiliki beberapa kumpulan simpul yang ditentukan, Anda dapat mengatur preferensi di mana beban kerja harus dijadwalkan dengan menentukan bobot relatif dalam definisi kumpulan simpul Anda. Bidang weight menerima bilangan bulat dari 1 hingga 100, dan nilai yang lebih tinggi memberikan prioritas yang lebih tinggi pada kumpulan simpul. Jika Anda menghilangkan weight, nilainya secara efektif 0. Contohnya:
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
Kumpulan simpul statis
Pool node statis mempertahankan jumlah tetap node yang diprovisikan oleh NAP sebagaimana ditentukan di kolom replicas, terlepas dari permintaan pod. Untuk mengubah jumlah simpul, secara eksplisit menskalakan NodePool, misalnya dengan menggunakan kubectl scale dengan nodepool static-node-pool --replicas=7. Nilai opsional limits.nodes membatasi penskalaan eksplisit dan kapasitas sementara yang dibuat selama penggantian node. Untuk kumpulan simpul statis, nodes adalah satu-satunya bidang yang didukung di bawah limits; Anda tidak dapat mengatur batas CPU atau memori.
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
Nota
Untuk kumpulan simpul statis, Anda hanya dapat menetapkan nodes pada kolom limits. Anda tidak dapat mengatur batas sumber daya atau weight, dan konsolidasi gangguan tidak berlaku. Setelah membuat NodePool, Anda tidak dapat mengalihkannya antara mode statis dan dinamis dengan menambahkan atau menghapus replicas bidang .
Langkah selanjutnya
Untuk informasi selengkapnya tentang node auto-provisioning di AKS, lihat artikel berikut ini: