Bagikan melalui


Mengonfigurasi kumpulan simpul untuk provisi otomatis simpul (NAP) di Azure Kubernetes Service (AKS)

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 NodePool untuk berfungsi.
  • NAP mengevaluasi setiap yang dikonfigurasi.
  • NAP melewatkan NodePools dengan 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 beberapa NodePools kecocokan, 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 standar NodePools untuk penggunaan segera.
  • None: Tidak membuat NodePools apapun. 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: