Tentang ComputeClass kustom

Anda dapat membuat ComputeClass sendiri untuk mengontrol properti node yang disediakan Google Kubernetes Engine (GKE) saat melakukan penskalaan otomatis cluster Anda. Halaman ini ditujukan bagi administrator platform yang ingin menentukan profil penskalaan otomatis untuk node secara deklaratif, sehingga workload tertentu berjalan di hardware yang memenuhi persyaratannya. Untuk mengetahui informasi selengkapnya tentang ComputeClass, lihat bagian Tentang ComputeClass GKE.

Ringkasan ComputeClass

Di GKE, ComputeClass adalah profil yang terdiri dari serangkaian atribut node yang digunakan GKE untuk menyediakan node yang menjalankan workload Anda selama peristiwa penskalaan otomatis. ComputeClass dapat menargetkan pengoptimalan tertentu, seperti penyediaan node berperforma tinggi atau memprioritaskan konfigurasi yang dioptimalkan untuk biaya agar biaya operasional lebih murah. Class komputasi kustom memungkinkan Anda menentukan profil yang kemudian digunakan GKE untuk menskalakan otomatis node agar memenuhi persyaratan workload tertentu.

ComputeClass kustom tersedia untuk digunakan dalam mode GKE Autopilot dan mode GKE Standard di versi 1.30.3-gke.1451000 dan yang lebih baru, serta menawarkan pendekatan deklaratif untuk menentukan atribut node dan prioritas penskalaan otomatis. ComputeClass kustom tersedia untuk dikonfigurasi dan digunakan di semua cluster GKE yang memenuhi syarat secara default.

Manfaat ComputeClass kustom

ComputeClass kustom menawarkan manfaat berikut:

  • Prioritas komputasi penggantian: Tentukan hierarki konfigurasi node di setiap ComputeClass yang akan diprioritaskan oleh GKE. Jika konfigurasi yang paling disukai tidak tersedia, GKE akan otomatis memilih konfigurasi berikutnya dalam hierarki. Model penggantian ini memastikan bahwa meskipun resource komputasi tidak tersedia, workload Anda tetap berjalan di hardware yang dioptimalkan dengan penundaan penjadwalan minimal.
  • Kontrol penskalaan otomatis yang terperinci: Tentukan konfigurasi node yang paling cocok untuk workload tertentu. GKE memprioritaskan konfigurasi tersebut saat membuat node selama penskalaan.
  • Konfigurasi infrastruktur deklaratif: Terapkan pendekatan deklaratif untuk pengelolaan infrastruktur sehingga GKE secara otomatis membuat node untuk Anda yang sesuai dengan persyaratan workload spesifik Anda.
  • Migrasi aktif: Jika resource komputasi untuk konfigurasi mesin yang lebih disukai tersedia di lokasi Anda, GKE akan otomatis memigrasikan workload Anda ke node baru yang menggunakan konfigurasi yang disukai.
  • Pengoptimalan biaya: Prioritaskan jenis node yang hemat biaya seperti Spot VM untuk mengurangi pengeluaran cluster Anda.
  • ComputeClass kustom default: Tetapkan ComputeClass kustom sebagai default untuk seluruh cluster atau untuk namespace Kubernetes tertentu, sehingga workload berjalan di hardware yang dioptimalkan meskipun tidak meminta ComputeClass tertentu.
  • Threshold konsolidasi node kustom: Menentukan threshold penggunaan resource kustom untuk node. Jika penggunaan resource node tertentu berada di bawah nilai minimum, GKE akan mencoba menggabungkan workload ke node serupa yang tersedia dan menurunkan skala node yang kurang dimanfaatkan.

Kasus penggunaan untuk ComputeClass kustom

Pertimbangkan untuk menggunakan ComputeClass kustom dalam skenario seperti berikut:

  • Anda ingin menjalankan workload AI/ML pada konfigurasi GPU atau TPU tertentu.
  • Anda ingin menyetel konfigurasi hardware default untuk beban kerja yang dijalankan tim tertentu, sehingga tidak membebani operator aplikasi.
  • Anda menjalankan workload yang berperforma optimal pada konfigurasi hardware atau seri mesin Compute Engine tertentu.
  • Anda ingin mendeklarasikan konfigurasi hardware yang memenuhi persyaratan bisnis tertentu, seperti performa tinggi, biaya yang dioptimalkan, atau ketersediaan tinggi.
  • Anda ingin GKE melakukan penggantian secara hierarkis untuk menggunakan konfigurasi hardware tertentu saat resource komputasi tidak tersedia, sehingga workload Anda selalu berjalan di mesin yang sesuai dengan persyaratannya.
  • Anda ingin memutuskan secara terpusat konfigurasi optimal di seluruh fleet perusahaan Anda, sehingga biaya Anda lebih dapat diprediksi dan beban kerja Anda berjalan lebih andal.
  • Anda ingin menentukan secara terpusat reservasi kapasitas Compute Engine mana yang harus digunakan GKE untuk menyediakan node baru bagi workload tertentu.
  • Anda ingin menentukan kebijakan penempatan rapat untuk digunakan dengan Autopilot GKE. Untuk mengetahui detailnya, lihat: penempatan rapat.

Cara kerja ComputeClass kustom

ComputeClass kustom adalah resource kustom Kubernetes yang menyediakan infrastrukturGoogle Cloud . Anda menentukan objek ComputeClass di cluster, lalu meminta ComputeClass dalam workload atau menetapkan class komputasi tersebut sebagai default untuk namespace Kubernetes. Saat workload yang cocok memerlukan infrastruktur baru, GKE akan menyediakan node baru sesuai dengan prioritas yang Anda tetapkan dalam definisi ComputeClass.

Atribut yang Anda tetapkan di ComputeClass menentukan cara GKE mengonfigurasi node baru untuk menjalankan workload. Saat Anda mengubah class komputasi yang ada, semua node mendatang yang dibuat GKE untuk ComputeClass tersebut akan menggunakan konfigurasi yang diubah. GKE tidak mengubah konfigurasi node yang ada secara retroaktif agar sesuai dengan modifikasi Anda.

ComputeClass Kustom memengaruhi keputusan penskalaan otomatis, tetapi tidak dipertimbangkan oleh kube-scheduler. Selama penjadwalan Pod, penjadwal mungkin tidak memprioritaskan node dengan prioritas ComputeClass kustom yang lebih tinggi, meskipun node yang ada tersedia di berbagai prioritas.

Untuk memastikan ComputeClass kustom Anda dioptimalkan untuk armada Anda, pertimbangkan panduan berikut:

  • Pahami persyaratan komputasi armada Anda, termasuk persyaratan hardware khusus aplikasi.
  • Tentukan tema yang memandu desain setiap ComputeClass. Misalnya, ComputeClass yang dioptimalkan untuk performa mungkin memiliki strategi penggantian yang hanya menggunakan jenis mesin dengan CPU tinggi.
  • Tentukan kelompok mesin dan rangkaian mesin Compute Engine yang paling sesuai dengan beban kerja Anda. Untuk mengetahui detailnya, lihat Panduan perbandingan dan resource kelompok mesin.
  • Rencanakan strategi penggantian dalam setiap ComputeClass sehingga workload selalu berjalan di node yang menggunakan konfigurasi mesin serupa. Misalnya, jika seri mesin N4 tidak tersedia, Anda dapat beralih ke mesin C3.

Melihat definisi resource kustom lengkap

Untuk melihat definisi resource kustom (CRD) terbaru untuk resource kustom ComputeClass, termasuk semua kolom dan hubungannya, lihat dokumentasi referensi ComputeClass.

Anda juga dapat melihat CRD di cluster dengan menjalankan perintah berikut:

kubectl describe crd computeclasses.cloud.google.com

Merencanakan ComputeClass kustom

Untuk merencanakan, men-deploy, dan menggunakan ComputeClass kustom secara efektif di cluster Anda, Anda harus melakukan langkah-langkah berikut:

  1. Pilih prioritas komputasi penggantian Anda: Tentukan serangkaian aturan yang mengatur properti node yang dibuat GKE untuk ComputeClass.
  2. Mengonfigurasi node pool GKE Standard dan ComputeClass: Untuk cluster mode Standard, lakukan langkah-langkah konfigurasi yang diperlukan untuk menggunakan ComputeClass dengan node pool Anda.
  3. Tentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku: secara opsional, beri tahu GKE apa yang harus dilakukan jika node yang memenuhi aturan prioritas Anda tidak dapat disediakan.
  4. Menetapkan parameter penskalaan otomatis untuk konsolidasi node: memberi tahu GKE kapan harus mengonsolidasikan workload dan menghapus node yang kurang dimanfaatkan.
  5. Mengonfigurasi migrasi aktif ke node dengan prioritas lebih tinggi: secara opsional, beri tahu GKE untuk memindahkan workload ke node yang lebih disukai saat hardware tersedia.
  6. Menggunakan reservasi Compute Engine: secara opsional, beri tahu GKE untuk menggunakan reservasi zonal Compute Engine yang ada saat membuat node baru.

Pilih prioritas komputasi penggantian Anda

Keuntungan utama menggunakan ComputeClass kustom adalah Anda dapat mengontrol strategi penggantian saat node pilihan Anda tidak tersedia karena faktor-faktor seperti kehabisan resource dan batasan kuota.

Anda membuat strategi penggantian dengan menentukan daftar aturan prioritas di ComputeClass kustom. Saat cluster perlu di-scale up, GKE membuat node yang cocok dengan aturan prioritas pertama. Jika GKE tidak dapat membuat node tersebut, GKE akan kembali ke aturan prioritas berikutnya, mengulangi proses ini hingga GKE berhasil menskalakan cluster atau menghabiskan semua aturan. Jika semua aturan habis, GKE akan membuat node berdasarkan perilaku default atau yang ditentukan yang dijelaskan dalam Menentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku.

Seri mesin Compute Engine yang berbeda mendukung teknologi dan fitur yang berbeda. Generasi sebelumnya dari seri mesin mungkin tidak mendukung jenis penyimpanan yang sama dengan generasi yang lebih baru. Jika Anda menjalankan workload stateful yang mengandalkan data persisten, hindari penggunaan ComputeClass yang mencakup beberapa generasi seri mesin. Workload mungkin tidak dapat mengakses data persisten jika GKE menempatkannya pada jenis mesin yang tidak mendukung jenis penyimpanan tersebut. Untuk mengetahui detailnya, filter tabel perbandingan seri mesin untuk jenis penyimpanan tertentu.

Aturan prioritas

Anda menentukan aturan prioritas di kolom spec.priorities pada resource kustom ComputeClass. Setiap aturan di kolom priorities menjelaskan properti node yang akan disediakan. GKE memproses kolom priorities dalam urutan, yang berarti bahwa item pertama dalam kolom adalah prioritas tertinggi untuk penyediaan node.

Ada dua jenis aturan prioritas:

  • Jenis aturan deklaratif: Gunakan karakteristik node untuk mendeskripsikan node yang ingin Anda sediakan

  • Jenis aturan node pool: Di cluster GKE Standard, menyediakan daftar node pool yang dibuat secara manual dan terkait dengan ComputeClass tempat GKE harus menyediakan node.

Aturan prioritas deklaratif

Dengan aturan prioritas deklaratif, Anda dapat menentukan properti mesin—seperti kelompok atau jenis mesin, Spot VM, opsi akselerator, opsi penyimpanan, reservasi, dan persyaratan resource minimum—agar digunakan GKE saat menyediakan node. Untuk mengetahui kumpulan lengkap kolom yang didukung, lihat referensi CRD ComputeClass.

Konfigurasi machineFamily

Kolom machineFamily menerima seri mesin Compute Engine seperti n4 atau c4. Jika tidak ditentukan, defaultnya adalah e2.

Anda dapat menggunakan kolom spec.priorities lainnya bersama dengan kolom machineFamily untuk menentukan persyaratan komputasi secara deklaratif, misalnya:

  • spot: Spot VM. Nilai defaultnya adalah false.
  • minCores: vCPU minimum per node. Nilai defaultnya adalah 0.
  • minMemoryGb: Memori minimum per node. Nilai defaultnya adalah 0.
  • storage.bootDiskKMSKey: Jalur ke kunci Cloud Key Management Service yang akan digunakan untuk enkripsi disk booting.
  • storage.secondaryBootDisks: Persistent Disk yang digunakan untuk memuat data terlebih dahulu ke node GKE, seperti model machine learning (ML) atau image container. Memerlukan GKE versi 1.31.2-gke.1105000 atau yang lebih baru. Untuk menyiapkan disk boot sekunder yang akan digunakan cluster Anda, lihat mengonfigurasi disk boot sekunder.
    • storage.secondaryBootDisks.diskImageName: nama disk image yang akan dimuat sebelumnya.
    • storage.secondaryBootDisks.project: nama project yang memiliki image disk. Jika nilai ini tidak ditentukan, defaultnya adalah project cluster Anda.
    • storage.secondaryBootDisks.mode: mode penggunaan boot disk sekunder. Jika nilai ini disetel ke CONTAINER_IMAGE_CACHE, boot disk sekunder akan digunakan sebagai cache image container. Nilai harus sama dengan CONTAINER_IMAGE_CACHE atau MODE_UNSPECIFIED. Jika nilai ini tidak ditentukan, defaultnya adalah MODE_UNSPECIFIED.
  • placement: Spesifikasi penempatan mesin:

Contoh berikut menunjukkan aturan prioritas yang menggunakan machineFamily:

priorities:
- machineFamily: n4
  spot: true
  minCores: 16
  minMemoryGb: 64
  storage:
    bootDiskKMSKey: projects/example/locations/us-central1/keyRings/example/cryptoKeys/key-1
    secondaryBootDisks:
    - diskImageName: pytorch-mnist
      project: k8s-staging-jobset
Konfigurasi machineType

Kolom machineType menerima jenis mesin yang telah ditetapkan Compute Engine, seperti n4-standard-32, atau string jenis mesin kustom, seperti n4-custom-8-20480. Penggunaan jenis mesin kustom memerlukan GKE versi 1.33.2-gke.1111000 atau yang lebih baru.

Anda dapat menentukan kolom spec.priorities lainnya bersama kolom machineType untuk menentukan persyaratan komputasi secara deklaratif, misalnya:

  • spot: Menggunakan Spot VM. Default-nya adalah false.
  • storage: Mengonfigurasi penyimpanan node.
    • storage.bootDiskType: Jenis boot disk. Di Autopilot, hanya jenis pd-balanced dari bootDiskType yang didukung.
    • storage.bootDiskKMSKey: Jalur ke kunci Cloud KMS yang akan digunakan untuk enkripsi boot disk.
    • storage.bootDiskSize: Ukuran dalam GB untuk boot disk node.
    • storage.localSSDCount: Jumlah SSD lokal yang akan dipasang ke node. Jika ditentukan, minimal harus 1.

Contoh berikut menunjukkan aturan prioritas yang menggunakan machineType untuk menyediakan jenis mesin n4-standard-32:

priorities:
- machineType: n4-standard-32
  spot: true
  storage:
    bootDiskType: pd-balanced
    bootDiskSize: 250
    localSSDCount: 2
    bootDiskKMSKey: projects/example/locations/us-central1/keyRings/example/cryptoKeys/key-1
Konfigurasi GPU

Untuk memilih GPU dalam aturan prioritas, tentukan jenis, jumlah, dan driverVersion (opsional) GPU di kolom gpu aturan prioritas. Kolom berikut didukung:

  • gpu.type: Jenis GPU, seperti nvidia-l4. Untuk mengetahui detailnya, lihat Memilih dukungan GPU menggunakan Autopilot atau Standard.
  • gpu.count: Jumlah GPU yang akan dipasang. Untuk mengetahui jumlah yang didukung menurut jenis GPU, lihat Jumlah GPU yang didukung.
  • gpu.driverVersion: Versi driver NVIDIA yang akan diinstal. Harus berupa default atau latest. Memerlukan GKE versi 1.31.1-gke.1858000 atau yang lebih baru.

Anda juga dapat menentukan kolom spec.priorities lainnya seperti Spot VM, opsi penyimpanan, dan reservasi bersama dengan kolom gpu.

Contoh berikut menunjukkan aturan untuk GPU:

priorities:
- gpu:
    type: nvidia-l4
    count: 1
  storage:
    secondaryBootDisks:
    - diskImageName: big-llm
      project: k8s-llm
  spot: true
Konfigurasi TPU

Memerlukan GKE versi 1.31.2-gke.1518000 atau yang lebih baru

Untuk memilih TPU dalam aturan prioritas, tentukan jenis, jumlah, dan topologi TPU di kolom tpu pada aturan prioritas. Kolom berikut wajib diisi:

Anda juga dapat menentukan kolom spec.priorities lainnya bersama kolom tpu dalam aturan prioritas, misalnya:

  • spot: Menggunakan Spot VM. Default-nya adalah false.
  • storage: Mengonfigurasi penyimpanan node.
    • storage.bootDiskType: Jenis boot disk.
    • storage.bootDiskKMSKey: Jalur ke kunci Cloud KMS yang akan digunakan untuk enkripsi disk boot.
    • storage.bootDiskSize: Ukuran dalam GB untuk boot disk node.
  • reservations: Menggunakan reservasi Compute Engine. Untuk mengetahui detailnya, lihat bagian Menggunakan reservasi Compute Engine.

Contoh berikut menunjukkan aturan untuk TPU:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: tpu-class
spec:
  priorities:
  - tpu:
      type: tpu-v5p-slice
      count: 4
      topology: 4x4x4
    reservations:
      specific:
      - name: tpu-reservation
        project: reservation-project
      affinity: Specific
  - spot: true
    tpu:
      type: tpu-v5p-slice
      count: 4
      topology: 4x4x4
  nodePoolAutoCreation:
    enabled: true

Contoh ini menentukan perilaku penggantian berikut:

  1. GKE mencoba menyediakan slice TPU v5p multi-host 16 node dengan menggunakan reservasi Compute Engine bersama bernama tpu-reservation dari project reservation-project.
  2. Jika reservasi tidak memiliki TPU yang tersedia, GKE akan mencoba menyediakan slice TPU multi-host v5p 16 node yang berjalan di VM Spot.
  3. Jika tidak ada aturan sebelumnya yang dapat dipenuhi, GKE akan mengikuti logika di bagian Menentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku.

Setelah men-deploy ComputeClass kustom TPU ke cluster, pilih ComputeClass kustom tersebut di workload Anda:

Selain itu, untuk workload TPU, Anda dapat melakukan hal berikut:

Spesifikasi akselerator dan bentuk mesin

Konfigurasi akselerator deklaratif tidak memerlukan kolom machineType atau machineFamily untuk ditentukan secara eksplisit, kecuali jika Anda menggunakannya bersama dengan reservasi.

Aturan prioritas kumpulan node

Kolom nodepools mengambil daftar node pool yang ada tempat GKE mencoba membuat Pod yang tertunda. GKE tidak memproses nilai dalam kolom ini secara berurutan. Anda tidak dapat menggunakan kolom spec.priorities lainnya bersama kolom nodepools dalam item aturan prioritas yang sama karena aturan dengan kolom nodepools tidak bersifat deklaratif. Kolom ini hanya didukung pada mode GKE Standard. Untuk mengetahui detail penggunaan, lihat Menargetkan node pool tertentu dalam definisi ComputeClass.

Cara GKE membuat node menggunakan aturan prioritas

Saat Anda men-deploy workload yang meminta ComputeClass dan node baru diperlukan, GKE memproses daftar aturan di kolom priorities spesifikasi ComputeClass secara berurutan.

Misalnya, pertimbangkan spesifikasi berikut:

spec:
  ...
  priorities:
  - machineFamily: n4
    spot: true
    minCores: 64
  - machineFamily: n4
    spot: true
  - machineFamily: n4
    spot: false

Saat Anda men-deploy workload yang meminta ComputeClass dengan aturan prioritas ini, GKE akan mencocokkan node sebagai berikut:

  1. GKE menempatkan Pod di node yang ada yang terkait dengan ComputeClass ini.
  2. Jika node yang ada tidak dapat menampung Pod, GKE akan menyediakan node baru yang menggunakan seri mesin N4, merupakan Spot VM, dan memiliki setidaknya 64 vCPU.
  3. Jika Spot VM N4 dengan minimal 64 vCPU tidak tersedia di region, GKE akan menyediakan node baru yang menggunakan Spot VM N4 yang dapat menyesuaikan Pod, terlepas dari jumlah core.
  4. Jika tidak ada Spot VM N4 yang tersedia di region, GKE akan menyediakan VM N4 on-demand baru.
  5. Jika tidak ada aturan sebelumnya yang dapat dipenuhi, GKE akan mengikuti logika di bagian Menentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku.

Nilai default untuk aturan prioritas

Anda dapat menetapkan nilai default untuk beberapa kolom dalam aturan prioritas spesifikasi ComputeClass. Nilai default ini berlaku jika kolom yang sesuai dalam aturan tertentu tidak ada. Anda dapat menetapkan nilai default ini menggunakan kolom priorityDefaults dalam spesifikasi ComputeClass.

Kolom priorityDefaults memiliki batasan berikut:

  • Memerlukan GKE versi 1.32.1-gke.1729000 atau yang lebih baru.
  • Tidak kompatibel dengan aturan prioritas nodepools, yang tidak berisi kolom apa pun.

Untuk mengetahui detail tentang jenis nilai default yang dapat Anda tetapkan, lihat bagian priorityDefaults di ComputeClass CustomResourceDefinition.

Node pool GKE Standard dan ComputeClass

Jika Anda menggunakan mode GKE Standard, Anda mungkin harus melakukan konfigurasi manual untuk memastikan Pod ComputeClass Anda dijadwalkan sesuai yang diharapkan.

Mengonfigurasi node pool yang dibuat secara manual untuk penggunaan ComputeClass

Jika cluster GKE Standard Anda memiliki node pool yang Anda buat secara manual tanpa penyediaan otomatis node, Anda harus mengonfigurasi node pool tersebut untuk mengaitkannya dengan ComputeClass tertentu. GKE hanya menjadwalkan Pod yang meminta ComputeClass tertentu pada node di node pool yang Anda kaitkan dengan ComputeClass tersebut. Persyaratan ini tidak berlaku untuk ComputeClass yang Anda konfigurasi sebagai default tingkat cluster.

Node pool mode GKE Autopilot dan mode GKE Standard yang dibuat oleh penyediaan otomatis node akan otomatis melakukan konfigurasi ini untuk Anda.

Untuk mengaitkan node pool yang dibuat secara manual dengan ComputeClass, Anda menambahkan label node dan taint node ke node pool selama pembuatan atau selama update dengan menentukan tanda --node-labels dan tanda --node-taints, sebagai berikut:

  • Label node: cloud.google.com/compute-class=COMPUTE_CLASS
  • Taint: cloud.google.com/compute-class=COMPUTE_CLASS:NoSchedule

Dalam atribut ini, COMPUTE_CLASS adalah nama ComputeClass kustom Anda.

Misalnya, perintah berikut bersama-sama mengupdate node pool yang ada dan mengaitkan node pool dengan ComputeClass dev-class:

gcloud container node-pools update dev-pool \
    --cluster=example-cluster \
    --node-labels="cloud.google.com/compute-class=dev-class"

gcloud container node-pools update dev-pool \
    --cluster=example-cluster \
    --node-taints="cloud.google.com/compute-class=dev-class:NoSchedule"

Anda dapat mengaitkan setiap node pool di cluster dengan satu ComputeClass kustom. Pod yang dijadwalkan GKE di node pool yang dibuat secara manual ini hanya memicu pembuatan node di dalam node pool tersebut selama peristiwa penskalaan otomatis.

Penyediaan otomatis node dan ComputeClass

Anda dapat menggunakan penyediaan otomatis node dengan ComputeClass kustom untuk memungkinkan GKE membuat dan menghapus node pool secara otomatis berdasarkan aturan prioritas Anda.

Untuk menggunakan penyediaan otomatis node dengan ComputeClass, Anda harus melakukan hal berikut:

  1. Pastikan Anda telah mengaktifkan penyediaan otomatis node di cluster Anda.
  2. Tambahkan kolom nodePoolAutoCreation dengan nilai enabled: true ke spesifikasi ComputeClass Anda.

Kemudian, GKE dapat menempatkan Pod yang menggunakan ComputeClass yang mengonfigurasi penyediaan otomatis node di node pool baru. GKE memutuskan apakah akan menskalakan node pool yang ada atau membuat node pool baru berdasarkan faktor-faktor seperti ukuran cluster dan persyaratan Pod. Pod dengan ComputeClass yang tidak mengonfigurasi penyediaan otomatis node akan terus menskalakan node pool yang ada saja.

Anda dapat menggunakan ComputeClass yang berinteraksi dengan penyediaan otomatis node bersama dengan ComputeClass yang berinteraksi dengan node pool yang dibuat secara manual dalam cluster yang sama.

Pertimbangkan interaksi berikut dengan penyediaan otomatis node:

  • Anda tidak dapat menggunakan pemilih node kelompok mesin atau Spot VM karena pemilih ini bertentangan dengan perilaku ComputeClass. GKE menolak Pod apa pun yang meminta ComputeClass dan juga meminta VM Spot atau seri mesin tertentu.
  • Jika Anda menetapkan ComputeClass default untuk cluster, Pod yang menggunakan pemilih node kelompok mesin hanya memicu pembuatan node untuk class default tersebut dalam salah satu situasi berikut:

    • Pod memilih kelompok mesin yang cocok dengan salah satu aturan prioritas di kelas default tingkat cluster. Misalnya, Pod yang memilih instance N4 akan memicu pembuatan node jika class default tingkat cluster memiliki aturan prioritas untuk instance N4.
    • ComputeClass default tingkat cluster memiliki nilai ScaleUpAnyway di kolom spec.whenUnsatisfiable. Meskipun Pod memilih kelompok mesin yang tidak ada dalam prioritas ComputeClass, GKE akan membuat node baru dengan kelompok mesin tersebut.

    Pod yang memilih rangkaian mesin yang tidak ada dalam prioritas class default tingkat cluster tidak akan memicu pembuatan node jika ComputeClass memiliki nilai DoNotScaleUp di kolom whenUnsatisfiable.

  • Anda dapat mengonfigurasi penyediaan otomatis node untuk ComputeClass yang menggunakan kolom nodepools untuk mereferensikan node pool yang ada. Penyediaan otomatis node memproses prioritas secara berurutan dan mencoba menskalakan node pool yang ada untuk menempatkan Pod Anda.

Pertimbangkan contoh berikut untuk cluster yang memiliki node pool yang dibuat secara manual dan penyediaan otomatis node:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-class
spec:
  priorities:
  - nodepools: [manually-created-pool]
  - machineFamily: n4
  - machineFamily: c4
  nodePoolAutoCreation:
    enabled: true

Dalam contoh ini, GKE mencoba melakukan hal berikut:

  1. Buat node baru di node pool manually-created-pool.
  2. Sediakan node N4, baik di node pool N4 yang ada maupun dengan membuat node pool baru.
  3. Jika GKE tidak dapat membuat node N4, GKE akan mencoba melakukan penskalaan node pool C4 yang ada atau membuat node pool C4 baru.

Menargetkan node pool tertentu dalam definisi ComputeClass

Kolom priorities.nodepools memungkinkan Anda menentukan daftar node pool yang dibuat secara manual yang digunakan GKE untuk mencoba menjadwalkan Pod tanpa urutan tertentu di cluster GKE Standard yang menggunakan penskalaan otomatis cluster. Kolom ini hanya mendukung daftar node pool; Anda tidak dapat menentukan properti mesin tambahan seperti seri mesin dalam aturan prioritas yang sama. Saat Anda men-deploy workload yang meminta ComputeClass yang memiliki kumpulan node bernama, GKE akan mencoba menjadwalkan Pod yang tertunda di kumpulan node tersebut. GKE dapat membuat node baru di node pool tersebut untuk menempatkan Pod.

Node pool yang Anda tentukan di kolom priorities.nodepools harus dikaitkan dengan ComputeClass tersebut menggunakan label node dan taint node, seperti yang dijelaskan di bagian Mengonfigurasi node pool yang dibuat secara manual untuk ComputeClass.

Daftar node pool yang Anda tentukan di kolom nodepools tidak memiliki prioritas. Untuk mengonfigurasi urutan penggantian untuk kumpulan node bernama, Anda harus menentukan beberapa item priorities.nodepools terpisah. Misalnya, pertimbangkan spesifikasi berikut:

spec:
  ...
  priorities:
  - nodepools: [pool1, pool2]
  - nodepools: [pool3]

Dalam contoh ini, GKE pertama-tama mencoba menempatkan Pod yang tertunda yang meminta ComputeClass ini di node yang ada dalam node pool yang diberi label dengan ComputeClass. Jika node yang ada tidak tersedia, GKE akan mencoba menyediakan node baru di pool1 atau pool2. Jika GKE tidak dapat menyediakan node baru di node pool ini, GKE akan mencoba menyediakan Pod baru di pool3.

Menentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku

Resource kustom ComputeClass memungkinkan Anda menentukan tindakan yang harus dilakukan GKE jika tidak ada node yang dapat memenuhi salah satu aturan prioritas. Kolom whenUnsatisfiable dalam spesifikasi mendukung nilai berikut.

  • ScaleUpAnyway: Buat node baru yang menggunakan konfigurasi mesin default cluster. Pada versi GKE yang lebih lama dari 1.33, ini adalah perilaku default jika Anda menghapus kolom ini.

    GKE melakukan salah satu tindakan berikut:

    • Di cluster Autopilot, GKE menempatkan Pod di node baru atau yang sudah ada, terlepas dari konfigurasi mesin node.
    • Di cluster Standard yang tidak menggunakan penyediaan otomatis node, GKE mencoba menskalakan node pool yang dibuat secara manual yang menentukan label dan taint yang cocok dengan ComputeClass tertentu.
    • Di cluster Standard yang menggunakan penyediaan otomatis node, GKE dapat membuat node pool baru yang menggunakan seri mesin E2 default untuk menempatkan Pod.
  • DoNotScaleUp: Biarkan Pod dalam status Pending hingga node yang memenuhi persyaratan ComputeClass tersedia. Di GKE versi 1.33 dan yang lebih baru, ini adalah perilaku default jika Anda tidak menyertakan kolom ini.

Meminta kebijakan penempatan

Mulai GKE versi 1.33.2-gke.1335000, di cluster GKE Autopilot, Anda dapat menggunakan penempatan rapat dengan kebijakan penempatan atau kebijakan workload kustom. Untuk mengetahui informasi selengkapnya, lihat Perbandingan kebijakan penempatan ringkas dan kebijakan workload.

Kebijakan penempatan dan kebijakan beban kerja menempatkan node secara fisik berdekatan untuk mengurangi latensi jaringan. Untuk menggunakan kebijakan tertentu, Anda memberikan namanya di kolom policyName. Kebijakan harus berupa kebijakan resource Compute Engine yang sudah ada di project GKE.

Perhatikan contoh berikut:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-class
spec:
  priorities:
  - machineFamily: n4
    placement:
      policyName: my-placement-policy
  nodePoolAutoCreation:
    enabled: true

Dalam konfigurasi ini, GKE menerapkan kebijakan penempatan rapat untuk semua workload yang menggunakan ComputeClass ini dan menyediakan node-nya sesuai dengan kebijakan resource yang ada bernama my-placement-policy.

Menetapkan parameter penskalaan otomatis untuk konsolidasi node

Secara default, GKE menghapus node yang kurang dimanfaatkan dengan menjalankan beban kerja, menggabungkan beban kerja tersebut di node lain yang memiliki kapasitas. Untuk semua ComputeClass, ini adalah perilaku default karena semua cluster yang menggunakan ComputeClass harus menggunakan penskala otomatis cluster atau merupakan cluster Autopilot. Selama konsolidasi node, GKE mengosongkan node yang kurang dimanfaatkan, membuat ulang beban kerja di node lain, lalu menghapus node yang dikosongkan.

Waktu dan kriteria penghapusan node bergantung pada profil penskalaan otomatis. Anda dapat menyesuaikan batas pemanfaatan resource yang rendah yang memicu penghapusan node dan konsolidasi workload menggunakan bagian autoscalingPolicy dalam definisi ComputeClass kustom. Anda dapat menyesuaikan parameter berikut:

  • consolidationDelayMinutes: Jumlah menit setelah GKE menghapus node yang kurang dimanfaatkan
  • consolidationThreshold: Threshold penggunaan untuk CPU dan memori sebagai persentase resource yang tersedia di node. GKE hanya mempertimbangkan penghapusan node jika pemakaian resource kurang dari nilai minimum ini.
  • gpuConsolidationThreshold: Threshold pemakaian GPU sebagai persentase resource yang tersedia di node. GKE hanya mempertimbangkan penghapusan node jika pemakaian resource kurang dari nilai minimum ini. Sebaiknya tetapkan ini ke 100 atau 0 agar GKE menggabungkan node yang tidak memiliki pemanfaatan 100% GPU terpasang.

Perhatikan contoh berikut:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-class
spec:
  priorities:
  - machineFamily: n4
  - machineFamily: c4
  autoscalingPolicy:
    consolidationDelayMinutes: 5
    consolidationThreshold: 70

Dalam konfigurasi ini, GKE menghapus node yang tidak digunakan setelah lima menit, dan node hanya menjadi kandidat untuk konsolidasi jika penggunaan CPU dan memorinya kurang dari 70%.

Mengonfigurasi migrasi aktif ke node dengan prioritas yang lebih tinggi

Migrasi aktif adalah fitur penskalaan otomatis opsional di ComputeClass kustom yang secara otomatis menggantikan node yang ada yang lebih rendah dalam daftar prioritas penggantian ComputeClass dengan node baru yang lebih tinggi dalam daftar prioritas tersebut. Hal ini memastikan bahwa semua Pod yang berjalan pada akhirnya akan berjalan di node yang paling Anda sukai untuk ComputeClass tersebut, meskipun awalnya GKE harus menjalankan Pod tersebut di node yang kurang disukai.

Saat migrasi aktif terjadi, GKE membuat node baru berdasarkan aturan prioritas ComputeClass, lalu menguras dan menghapus node prioritas rendah yang sudah tidak digunakan. Migrasi terjadi secara bertahap untuk meminimalkan gangguan workload. Migrasi aktif memiliki pertimbangan berikut:

  • Migrasi aktif tidak memigrasikan data yang disimpan di penyimpanan persisten, seperti Persistent Disk Compute Engine. Untuk meminimalkan risiko kehilangan data, jangan aktifkan migrasi aktif di ComputeClass yang digunakan oleh beban kerja stateful.
  • Jika Anda telah mengaktifkan penyediaan otomatis node di cluster Standar, migrasi aktif dapat memicu pembuatan node pool baru jika node pool yang ada tidak memenuhi kriteria prioritas yang lebih tinggi yang ditentukan dalam class komputasi kustom Anda.
  • Migrasi aktif tidak menggantikan node yang tidak dapat dihapus. Misalnya, migrasi aktif tidak menggantikan node jika tindakan tersebut melanggar setelan node pool --min-nodes.
  • Untuk menghindari gangguan workload penting, migrasi aktif tidak memindahkan Pod berikut:
    • Pod yang menetapkan PodDisruptionBudget, jika pemindahan akan melebihi PodDisruptionBudget.
    • Pod yang memiliki anotasi cluster-autoscaler.kubernetes.io/safe-to-evict: "false".
  • Beban kerja yang menggunakan volume persisten dengan resource zonal seperti Hyperdisk mungkin tidak berfungsi dengan baik saat migrasi aktif. Batasan zona dan batasan jenis mesin beberapa produk Hyperdisk dapat mengurangi efektivitas migrasi aktif. Selain itu, beberapa workload stateful mungkin tidak dapat mentoleransi gangguan yang disebabkan oleh migrasi aktif.
  • Jika Anda mengupdate ComputeClass yang ada untuk mengaktifkan migrasi aktif, GKE akan memigrasikan Pod yang ada ke node dengan prioritas lebih tinggi dari waktu ke waktu.

Pertimbangkan spesifikasi ComputeClass contoh berikut, yang memprioritaskan node N4 daripada node C4:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-class
spec:
  priorities:
  - machineFamily: n4
  - machineFamily: c4
  activeMigration:
    optimizeRulePriority: true

Jika node N4 tidak tersedia saat Anda men-deploy Pod dengan ComputeClass ini, GKE akan menggunakan node C4 sebagai opsi penggantian. Jika node N4 tersedia untuk disediakan nanti, seperti jika kuota Anda meningkat atau jika VM N4 tersedia di lokasi Anda, GKE akan membuat node N4 baru dan memigrasikan Pod secara bertahap dari node C4 yang ada ke node N4 baru. Kemudian, GKE menghapus node C4 yang sudah tidak digunakan.

Menggunakan reservasi Compute Engine

Tersedia di GKE versi 1.31.1-gke.2105000 dan yang lebih baru

Jika Anda menggunakan pemesanan kapasitas Compute Engine untuk mendapatkan tingkat jaminan ketersediaan hardware yang lebih tinggi di zona tertentu, Anda dapat mengonfigurasi setiap prioritas penggantian di ComputeClass kustom sehingga GKE menggunakan pemesanan saat membuat node baru.Google Cloud

Penggunaan reservasi di ComputeClass kustom memiliki persyaratan berikut:

  • Cluster mode Standard harus menggunakan penyediaan otomatis node agar GKE dapat menggunakan reservasi untuk membuat node baru. Untuk mengetahui detailnya, lihat bagian Penyediaan otomatis node dan ComputeClasses. Anda juga dapat terus menggunakan reservasi saat membuat node pool secara manual di cluster.
  • Reservasi non-TPU hanya dapat digunakan jika machineType atau machineFamily ditentukan.
  • ComputeClass yang mengonfigurasi SSD lokal harus menggunakan aturan prioritas machineType, bukan machineFamily. Untuk mengetahui detailnya, lihat bagian jenis aturan machineType.
  • ComputeClass yang menentukan reservasi untuk machineType yang telah melampirkan SSD lokal harus menyertakan kolom localSSDCount: secara eksplisit.

Pertimbangkan contoh spesifikasi ComputeClass berikut, yang memprioritaskan pemesanan bersama tertentu untuk digunakan saat menyediakan instance a3-highgpu-1g. Jika jenis instance yang diprioritaskan tidak tersedia, GKE akan melakukan pengalihan ke reservasi yang cocok dalam spesifikasi:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: accelerator-reservations
spec:
  nodePoolAutoCreation:
    enabled: true
  priorities:
  - machineType: a3-highgpu-1g
    storage:
      localSSDCount: 2
    gpu:
      type: nvidia-h100-80gb
      count: 1
    reservations:
      specific:
      - name: a3-shared-reservation
        project: reservation-project
      affinity: Specific
  - machineType: a3-highgpu-1g
    storage:
      localSSDCount: 2
    gpu:
      type: nvidia-h100-80gb
      count: 1
    reservations:
      affinity: AnyBestEffort
  whenUnsatisfiable: DoNotScaleUp

Jika Anda men-deploy Pod yang menggunakan ComputeClass accelerator-reservations, GKE akan mencoba menggunakan reservasi a3-shared-reservation terlebih dahulu saat membuat instance a3-highgpu-1g baru untuk menjalankan Pod. Jika reservasi tertentu ini tidak memiliki kapasitas yang tersedia, GKE akan mencoba melakukan penskalaan instance a3-highgpu-1g dengan menggunakan reservasi yang cocok. Jika tidak ada reservasi yang dapat diakses, GKE akan melakukan penggantian ke a3-highgpu-1gSpot VM. Terakhir, jika tidak ada Spot VM yang tersedia, operasi penskalaan akan gagal.

Dalam contoh ini, kedua aturan prioritas dengan referensi reservasi secara eksplisit memerlukan kolom localSSDCount: karena bentuk mesin a3-highgpu-1g mencakup SSD lokal.

Contoh berikut menunjukkan reservasi spesifik bersama, yang melakukan penggantian ke VM Spot, lalu akhirnya ke VM on-demand:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: shared-specific-reservations
spec:
  nodePoolAutoCreation:
    enabled: true
  priorities:
  - machineFamily: n4
    reservations:
      specific:
      - name: n4-shared-reservation
        project: reservation-project
      affinity: Specific
  - machineFamily: n4
    spot: true
  - machineFamily: n4
  whenUnsatisfiable: DoNotScaleUp

Anda dapat menggunakan jenis reservasi berikut:

  • Reservasi satu project tertentu: konfigurasi kolom berikut:

    • reservations.specific.name: nama reservasi.
    • reservations.affinity: harus Specific.
  • Reservasi bersama khusus: konfigurasi kolom berikut:

    • reservations.specific.name: nama reservasi.
    • reservations.specific.project: project ID project yang memiliki pemesanan.
    • reservations.affinity: harus Specific.
  • Reservasi yang cocok: konfigurasikan kolom berikut:

    • reservations.affinity: harus AnyBestEffort.
    • Jangan tetapkan nama atau project pemesanan.

Pemesanan TPU memerlukan Afinitas spesifik. reservations.affinity: AnyBestEffort tidak didukung.

Jika GKE tidak dapat menemukan kapasitas yang tersedia dalam reservasi, perilaku yang dihasilkan bergantung pada jenis reservasi yang dipilih dalam aturan prioritas ComputeClass, sebagai berikut:

  • Reservasi spesifik: GKE mencoba aturan prioritas berikutnya di ComputeClass.
  • Reservasi yang cocok: GKE mencoba menyediakan node sesuai permintaan yang memenuhi persyaratan aturan prioritas tersebut. Jika GKE tidak dapat menyediakan node sesuai permintaan, GKE akan mencoba aturan prioritas berikutnya di ComputeClass.

Jika GKE tidak dapat memenuhi persyaratan aturan prioritas apa pun untuk ComputeClass, perilaku saat tidak ada aturan yang berlaku akan terjadi.

Memakai blok reservasi tertentu

Mulai dari GKE versi 1.31.4-gke.1072000, Anda dapat menargetkan blok reservasi tertentu dalam reservasi yang didukung hardware. Fitur ini tersedia untuk jenis mesin A3 Ultra dan A4.

Untuk menggunakan blok reservasi tertentu, konfigurasi resource ComputeClass Anda seperti yang ditunjukkan dalam contoh ini:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: specific-reservations
spec:
  nodePoolAutoCreation:
    enabled: true
  priorities:
  - machineFamily: a3
    gpu:
      type: nvidia-h200-141gb
      count: 8
    reservations:
      specific:
      - name: a3ultra-specific-reservation
        reservationBlock:
          name: RESERVATION_BLOCK_NAME
      affinity: Specific

Ganti RESERVATION_BLOCK_NAME dengan nama blok reservasi target.

Mulai dari GKE versi 1.33.1-gke.1788000, Anda dapat menargetkan sub-blok reservasi tertentu dalam blok reservasi. Fitur ini tersedia untuk jenis mesin A4X.

Untuk menggunakan sub-blok reservasi tertentu, konfigurasi resource ComputeClass Anda seperti yang ditunjukkan dalam contoh di Menggunakan sub-blok reservasi tertentu.

Saat Anda menggunakan fitur ini, perhatikan pertimbangan berikut:

  • Fitur ini hanya berlaku untuk reservasi tertentu dalam project tunggal atau bersama.

Menyesuaikan konfigurasi sistem node

Anda dapat menyesuaikan parameter tertentu di kubelet dan kernel Linux dengan menggunakan kolom nodeSystemConfig dalam spesifikasi ComputeClass. Anda dapat menentukan kolom ini dalam aturan prioritas apa pun yang menentukan seri mesin atau jenis mesin Compute Engine. Anda juga dapat menetapkan nilai global default untuk kolom konfigurasi sistem node yang dihilangkan dalam aturan prioritas dengan menambahkan kolom nodeSystemConfig ke kolom priorityDefaults di kelas komputasi.

Fitur ini tersedia di GKE versi 1.32.1-gke.1729000 dan yang lebih baru.

Untuk informasi lebih lanjut, lihat halaman berikut:

ComputeClass default untuk cluster dan namespace

Anda dapat mengonfigurasi GKE untuk menerapkan ComputeClass secara default ke Pod yang tidak memilih ComputeClass tertentu. Anda dapat menentukan ComputeClass default untuk namespace tertentu atau untuk seluruh cluster. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi cluster atau namespace dengan class default, lihat Menerapkan ComputeClass ke Pod secara default.

Mengelompokkan node pool

Mulai GKE versi 1.32.2-gke.1359000, Anda dapat mengelompokkan beberapa node pool ke dalam satu unit logis yang disebut koleksi dengan menggunakan kolom nodePoolGroup dalam spesifikasi ComputeClass. Pengelompokan ini memungkinkan Anda menerapkan konfigurasi bersama di banyak node pool.

Koleksi multi-host TPU

Anda dapat mengelompokkan deployment multi-host TPU untuk menetapkan Tujuan Tingkat Layanan (SLO) di semua node pool dalam koleksi. Untuk mengelompokkan kumpulan node, tentukan nama grup di kolom nodePoolGroup. Semua node pool yang disediakan menggunakan ComputeClass ini termasuk dalam grup yang sama.

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: tpu-multi-host-collection
spec:
  nodePoolGroup:
    name: my-tpu-collection
  ...

Untuk informasi selengkapnya, lihat referensi berikut:

Konfigurasi node pool

Kolom nodePoolConfig dalam spesifikasi ComputeClass memungkinkan Anda menerapkan konfigurasi yang tercermin di semua node dalam node pool yang dibuat menggunakan class tersebut.

Menentukan jenis gambar

Anda dapat menentukan sistem operasi dasar untuk node di node pool dengan menggunakan kolom imageType. Kolom ini memungkinkan Anda memilih jenis image untuk node pool yang akan berjalan di node. Jika Anda menghapus kolom ini, nilai defaultnya adalah cos_containerd. Contoh berikut menunjukkan cara menentukan imageType di ComputeClass Anda:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-node-pool-config
spec:
  nodePoolConfig:
    imageType: cos_containerd

Untuk mengetahui informasi selengkapnya, lihat Image node.

Akun layanan

Kolom serviceAccount menentukan akun layanan Google Cloud yang digunakan oleh node dalam node pool yang dikelola oleh ComputeClass. Contoh berikut menunjukkan cara menentukan serviceAccount di ComputeClass Anda:

spec:
  nodePoolConfig:
    serviceAccount: my-service-account@my-project.iam.gserviceaccount.com

Untuk mengetahui informasi selengkapnya, lihat Tentang akun layanan di GKE.

Menentukan jenis beban kerja untuk SLO TPU

Mulai GKE versi 1.32.2-gke.1359000, Anda dapat menentukan Tujuan Tingkat Layanan (SLO) untuk workload TPU dengan menggunakan kolom workloadType dalam nodePoolConfig. Nilai di kolom ini memberi tahu GKE penggunaan yang dimaksudkan untuk resource TPU. Kolom workloadType mendukung nilai berikut:

  • HIGH_AVAILABILITY: gunakan nilai ini untuk workload yang berfokus pada ketersediaan, seperti penyajian inferensi, untuk membatasi dan menyederhanakan gangguan.
  • HIGH_THROUGHPUT: gunakan nilai ini untuk tugas batch atau pelatihan yang memerlukan semua infrastruktur yang mendasarinya untuk berjalan hampir sepanjang waktu agar dapat berjalan. Nilai ini hanya dapat digunakan jika nodePoolGroup juga ditentukan.

Contoh berikut menentukan ComputeClass untuk koleksi TPU multi-host yang dioptimalkan untuk workload inferensi ketersediaan tinggi.

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: multi-host-inference
spec:
  nodePoolGroup:
    name: my-inference-collection
  nodePoolConfig:
    workloadType: HIGH_AVAILABILITY
  nodePoolAutoCreation:
    enabled: true
  priorities:
  - tpu:
      type: tpu-v6e-slice
      topology: 2x4

Untuk informasi lebih lanjut, lihat halaman berikut:

Meminta ComputeClass dalam workload

Untuk menggunakan ComputeClass kustom, Pod Anda harus secara eksplisit meminta ComputeClass tersebut menggunakan nodeSelector dalam spesifikasi Pod. Secara opsional, Anda dapat menetapkan ComputeClass sebagai default untuk namespace Kubernetes tertentu. Pod di namespace tersebut menggunakan ComputeClass tersebut kecuali jika Pod meminta ComputeClass yang berbeda.

Misalnya, manifes berikut meminta ComputeClass cost-optimized:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: custom-workload
spec:
  replicas: 2
  selector:
    matchLabels:
      app: custom-workload
  template:
    metadata:
      labels:
        app: custom-workload
    spec:
      nodeSelector:
        cloud.google.com/compute-class: cost-optimized
      containers:
      - name: test
        image: gcr.io/google_containers/pause
        resources:
          requests:
            cpu: 1.5
            memory: "4Gi"

Pemilih node untuk label node sistem

GKE menambahkan label sistem ke node untuk mengidentifikasi node berdasarkan kriteria seperti jenis mesin, akselerator hardware terpasang, atau jenis boot disk. Label sistem ini memiliki salah satu awalan berikut di kunci label:

  • k8s.io
  • cloud.google.com
  • gke.io

Pada GKE versi 1.32.3-gke.1499000 dan yang lebih baru, Anda dapat men-deploy workload yang menggunakan pemilih node untuk memilih label sistem dan ComputeClass secara bersamaan. Jika Anda memilih label sistem di Pod yang memilih class komputasi, pastikan Pod tersebut dijadwalkan seperti yang diharapkan. Konflik antara konfigurasi ComputeClass dan pemilih node di Pod dapat menyebabkan masalah seperti berikut:

  • GKE tidak dapat membuat node yang menggunakan konfigurasi prioritas tertinggi untuk ComputeClass.
  • Pod tetap dalam status Pending.

GKE juga menolak Pod apa pun yang memilih label sistem yang memiliki kolom terkait dalam spesifikasi ComputeClass. Saat Anda menggunakan class komputasi, perbarui beban kerja untuk menghapus label berikut dari pemilih node dan mengonfigurasi kolom yang sesuai di ComputeClasses yang Anda buat:

Label node Kolom ComputeClass
cloud.google.com/machine-family priorities.machineFamily
cloud.google.com/machine-type priorities.machineType
cloud.google.com/gke-spot priorities.spot
cloud.google.com/gke-accelerator priorities.gpu.type
cloud.google.com/gke-gpu-driver-version priorities.gpu.driverVersion
cloud.google.com/reservation-name priorities.reservations.specific.name
cloud.google.com/reservation-project priorities.reservations.specific.project
cloud.google.com/reservation-affinity priorities.reservations.affinity
cloud.google.com/gke-ephemeral-storage-local-ssd priorities.storage.localSSDCount
cloud.google.com/gke-boot-disk priorities.storage.bootDiskType
cloud.google.com/gke-boot-disk-size priorities.storage.bootDiskSize
cloud.google.com/gke-node-pool-group-name nodePoolGroup.name
cloud.google.com/gke-workload-type nodePoolConfig.workloadType

Langkah berikutnya