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 kolam node untuk penyediaan otomatis node (NAP) di Azure Kubernetes Service (AKS), termasuk pemilih SKU, batas sumber daya, dan bobot prioritas. Ini juga menyediakan contoh untuk membantu Anda memulai.
Gambaran umum kumpulan simpul di NAP
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.
- Persyaratan arsitektur dan kemampuan.
Sumber daya NodePool menetapkan batasan pada simpul yang dibuat oleh NAP dan pod yang berjalan pada simpul tersebut. Ketika Anda pertama kali menginstal NAP, NAP membuat default NodePool. Anda dapat memodifikasi kumpulan simpul ini atau membuat kumpulan simpul tambahan agar sesuai dengan persyaratan beban kerja Anda.
Perilaku utama NodePools dalam NAP
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 komponen yang tidak saling tumpang tindih
NodePools. Ketika beberapaNodePoolskecocokan, ia menggunakan yang dengan 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:
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
Ini juga membuat kumpulan simpul system-surge, yang membantu menskalakan secara otomatis simpul dalam kumpulan sistem.
Mengontrol konfigurasi kumpulan simpul default selama pembuatan kluster
Saat Anda membuat kluster AKS baru yang telah diaktifkan dengan fitur NAP menggunakan Azure CLI, Anda dapat menyertakan --node-provisioning-default-pools flag untuk mengontrol konfigurasi default NAP NodePool.
Bendera --node-provisioning-default-pools mengontrol konfigurasi NAP NodePool default dan 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. Anda harus menghapusnya 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 terkenal yang diterapkan Azure. Anda dapat menentukan label ini di bagian spec.requirementsNodePool API. NAP juga mendukung label khusus Azure untuk penjadwalan yang lebih canggih.
karpenter.azure.com Pemilih SKU
Tabel berikut mencantumkan pemilih SKU karpenter.azure.com yang dapat Anda gunakan pada bagian spec.requirements dari API NodePool Anda untuk menentukan karakteristik VM untuk simpul Anda.
| Selector | Description | Example |
|---|---|---|
karpenter.azure.com/sku-family |
Keluarga VM SKU | D, F, L, dll. |
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.sh/capacity-type |
Jenis alokasi VM (Spot / Sesuai permintaan) | Tempat |
karpenter.azure.com/sku-cpu |
Jumlah CPU dalam VM | 16 |
karpenter.azure.com/sku-memory |
Memori dalam VM di MiB | 131072 |
kubernetes.azure.com/sku-cpu |
Jumlah CPU dalam VM | 16 |
kubernetes.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.io merek terkenal
Tabel berikut mencantumkan kubernetes.io label terkenal yang dapat Anda gunakan di spec.requirements bagian API Anda NodePool untuk menentukan karakteristik node untuk simpul Anda:
| Etiket | Description | Example |
|---|---|---|
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] |
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 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
Anda dapat menemukan zona yang tersedia untuk wilayah Anda menggunakan az account list-locations --output table perintah Azure CLI.
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 telah Anda sediakan. Anda juga dapat menentukan batas atas sumber daya yang digunakan kumpulan simpul dengan menentukan batas dalam spesifikasi kumpulan simpul. Misalnya:
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
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. 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
Langkah selanjutnya
Untuk informasi selengkapnya tentang node auto-provisioning di AKS, lihat artikel berikut ini: