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:
- Pilih prioritas komputasi penggantian Anda: Tentukan serangkaian aturan yang mengatur properti node yang dibuat GKE untuk ComputeClass.
- Mengonfigurasi node pool GKE Standard dan ComputeClass: Untuk cluster mode Standard, lakukan langkah-langkah konfigurasi yang diperlukan untuk menggunakan ComputeClass dengan node pool Anda.
- 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.
- Menetapkan parameter penskalaan otomatis untuk konsolidasi node: memberi tahu GKE kapan harus mengonsolidasikan workload dan menghapus node yang kurang dimanfaatkan.
- 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.
- 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 adalahfalse
.minCores
: vCPU minimum per node. Nilai defaultnya adalah0
.minMemoryGb
: Memori minimum per node. Nilai defaultnya adalah0
.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 keCONTAINER_IMAGE_CACHE
, boot disk sekunder akan digunakan sebagai cache image container. Nilai harus sama denganCONTAINER_IMAGE_CACHE
atauMODE_UNSPECIFIED
. Jika nilai ini tidak ditentukan, defaultnya adalahMODE_UNSPECIFIED
.
placement
: Spesifikasi penempatan mesin:policyName
: Nama kebijakan penempatan ringkas GKE Autopilot atau kebijakan workload.
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 adalahfalse
.storage
: Mengonfigurasi penyimpanan node.storage.bootDiskType
: Jenis boot disk. Di Autopilot, hanya jenispd-balanced
daribootDiskType
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 harus1
.
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, sepertinvidia-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 berupadefault
ataulatest
. 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:
tpu.type
: Jenis TPU, sepertitpu-v5p-slice
. Untuk mengetahui detailnya, lihat Ketersediaan TPU di GKE Autopilot.tpu.count
: Jumlah TPU yang akan dilampirkan.tpu.topology
: Topologi TPU yang akan digunakan, seperti"2x2x1"
. Untuk mengetahui detailnya, lihat Memilih topologi untuk Autopilot.
Anda juga dapat menentukan kolom spec.priorities
lainnya
bersama kolom tpu
dalam aturan prioritas, misalnya:
spot
: Menggunakan Spot VM. Default-nya adalahfalse
.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:
- GKE mencoba menyediakan slice TPU v5p multi-host 16 node dengan menggunakan reservasi Compute Engine bersama bernama
tpu-reservation
dari projectreservation-project
. - Jika reservasi tidak memiliki TPU yang tersedia, GKE akan mencoba menyediakan slice TPU multi-host v5p 16 node yang berjalan di VM Spot.
- 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:
- Workload Autopilot: lihat bagian "Menyediakan TPU menggunakan ComputeClass kustom" di Men-deploy workload TPU di GKE Autopilot
- Workload standar: lihat bagian "Menyediakan TPU menggunakan ComputeClass kustom" di Men-deploy workload TPU di GKE Standard.
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:
- GKE menempatkan Pod di node yang ada yang terkait dengan ComputeClass ini.
- 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.
- 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.
- Jika tidak ada Spot VM N4 yang tersedia di region, GKE akan menyediakan VM N4 on-demand baru.
- 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.
- Node pool yang dikelola oleh penyediaan otomatis node: Tidak memerlukan konfigurasi manual. Penyediaan otomatis node secara otomatis melakukan langkah-langkah konfigurasi ComputeClass untuk Anda. Untuk mengetahui detailnya, lihat Penyediaan otomatis node dan ComputeClasses.
- Node pool yang dibuat secara manual: Konfigurasi manual diperlukan. Anda harus menambahkan label node dan taint node ke node pool yang dibuat secara manual untuk mengaitkan node dengan ComputeClass tertentu. Untuk mengetahui detailnya, lihat Mengonfigurasi node pool yang dibuat secara manual untuk penggunaan ComputeClass.
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:
- Pastikan Anda telah mengaktifkan penyediaan otomatis node di cluster Anda.
- Tambahkan kolom
nodePoolAutoCreation
dengan nilaienabled: true
ke spesifikasiComputeClass
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 kolomspec.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 kolomwhenUnsatisfiable
.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:
- Buat node baru di node pool
manually-created-pool
. - Sediakan node N4, baik di node pool N4 yang ada maupun dengan membuat node pool baru.
- 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 statusPending
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 dimanfaatkanconsolidationThreshold
: 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 ke100
atau0
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
ataumachineFamily
ditentukan. - ComputeClass yang mengonfigurasi SSD lokal harus menggunakan aturan prioritas
machineType
, bukanmachineFamily
. Untuk mengetahui detailnya, lihat bagian jenis aturan machineType. - ComputeClass yang menentukan reservasi untuk
machineType
yang telah melampirkan SSD lokal harus menyertakan kolomlocalSSDCount:
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-1g
Spot 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
: harusSpecific
.
Reservasi bersama khusus: konfigurasi kolom berikut:
reservations.specific.name
: nama reservasi.reservations.specific.project
: project ID project yang memiliki pemesanan.reservations.affinity
: harusSpecific
.
Reservasi yang cocok: konfigurasikan kolom berikut:
reservations.affinity
: harusAnyBestEffort
.- 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:
- Merencanakan TPU di GKE
- Node pool slice TPU multi-host
- Menjadwalkan kumpulan TPU untuk beban kerja inferensi
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 jikanodePoolGroup
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
- Pelajari rekomendasi deployment workload lainnya di GKE Autopilot
- Pelajari cara mengonfigurasi, men-deploy, dan meminta ComputeClass kustom