Anda dapat menentukan kumpulan atribut node dan setelan penskalaan otomatis yang digunakan Google Kubernetes Engine (GKE) untuk membuat node guna menjalankan Pod menggunakan ComputeClasses. Halaman ini menjelaskan cara kerja ComputeClasses, kasus penggunaan dan manfaatnya, serta jenis ComputeClasses yang tersedia.
Informasi ini ditujukan untuk orang-orang berikut:
- Arsitek cloud dan engineer platform yang ingin mengurangi overhead yang terkait dengan pengelolaan infrastruktur cluster.
- Operator aplikasi dan SRE yang ingin berfokus pada pengoperasian workload tanpa memikirkan infrastruktur yang mendasarinya.
Tentang ComputeClasses dan penskalaan otomatis cluster
ComputeClass adalah kumpulan atribut node dan setelan penskalaan otomatis yang ada sebagai objek Kubernetes API di cluster GKE. Anda dapat memilih ComputeClass di workload Kubernetes mana pun yang Anda deploy. Penskalaan otomatis cluster GKE menggunakan atribut di ComputeClass untuk membuat node untuk workload.
Engineer platform dapat menggunakan ComputeClasses untuk mengonfigurasi infrastruktur untuk berbagai jenis workload, sehingga setiap node baru dioptimalkan untuk persyaratan spesifik aplikasi Anda. ComputeClasses meningkatkan kecepatan dan fleksibilitas penskalaan otomatis GKE serta memberi Anda metode deklaratif untuk mengonfigurasi opsi infrastruktur di seluruh cluster. Untuk mengetahui informasi selengkapnya, lihat bagian Manfaat menggunakan ComputeClasses.
Kemampuan dan fitur GKE tertentu hanya tersedia dengan ComputeClasses, seperti berikut:
- Prioritas komputasi penggantian: menentukan beberapa kumpulan konfigurasi infrastruktur di ComputeClass, yang diprioritaskan berdasarkan preferensi Anda. Selama penskalaan, jika konfigurasi yang paling disukai tidak tersedia, GKE akan menggunakan konfigurasi berikutnya.
- Migrasi aktif ke node prioritas yang lebih tinggi: jika dikonfigurasi, GKE akan otomatis mengganti node yang berada di urutan lebih rendah dalam daftar prioritas penggantian Anda dengan node yang berada di urutan lebih tinggi dalam daftar tersebut dari waktu ke waktu. Hasilnya, Pod Anda pada akhirnya akan berjalan di node yang paling Anda sukai di ComputeClass, meskipun hardware tersebut tidak tersedia saat Anda membuat workload.
- Autopilot di GKE Standard: menjalankan workload dalam mode GKE Autopilot untuk menggunakan fitur Autopilot seperti platform komputasi yang dioptimalkan container dan penagihan berbasis Pod, bahkan di cluster Standard. GKE mengelola node dan workload ini, sehingga Anda mendapatkan manfaat mode Autopilot di cluster mana pun.
Manfaat ComputeClasses
ComputeClasses memberi admin dan operator platform manfaat seperti berikut:
- Peningkatan ketersediaan resource: ComputeClasses memperluas kemampuan penskalaan otomatis cluster GKE. Fitur ComputeClass seperti prioritas penggantian dan parameter konsolidasi node dapat mengurangi risiko Pod yang stuck dalam status Tertunda dan meningkatkan rentang opsi yang dapat Anda gunakan untuk menskalakan node.
- Konfigurasi tingkat platform deklaratif: ComputeClasses memungkinkan engineer Platform menjelaskan konfigurasi node secara deklaratif untuk berbagai jenis workload. Penskalaan otomatis GKE mengelola pembuatan dan konfigurasi node serta node pool. Anda dapat mengintegrasikan ComputeClasses ke dalam pipeline CI/CD untuk memiliki konsistensi dalam infrastruktur yang disediakan di seluruh platform.
- Pengurangan overhead pengelolaan: ComputeClasses mengurangi kompleksitas pengelolaan infrastruktur dan workload dalam skala besar. Engineer platform mendeklarasikan class infrastruktur, dan operator aplikasi memilih class yang relevan dalam workload. GKE mengelola penskalaan, konfigurasi hardware node, dan menerapkan taint, toleransi, dan label.
Tentang resource kustom ComputeClass
ComputeClasses adalah resource kustom Kubernetes . Anda dapat menentukan spesifikasi ComputeClass dalam file manifes dan membuatnya di cluster, mirip dengan cara Anda menentukan dan membuat resource workload Kubernetes seperti Deployment dan Layanan.
Contoh manifes berikut menentukan ComputeClass bernama n4:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
Saat Pod memilih ComputeClass ini, GKE akan melakukan hal berikut saat membuat node baru:
- GKE membuat node yang menggunakan seri mesin N4.
- Jika seri mesin N4 tidak tersedia, GKE akan membuat node yang menggunakan seri mesin N2.
- Jika seri mesin N2 tidak tersedia, GKE akan menunggu hingga resource tersedia untuk menjadwalkan Pod.
Anda dapat mengontrol berbagai setelan untuk node menggunakan ComputeClasses, termasuk akselerator, setelan sistem node, lokasi node, dan perilaku penggantian GKE saat resource hardware tidak tersedia. Untuk mengetahui informasi selengkapnya tentang semua konfigurasi yang tersedia untuk ComputeClasses, lihat ComputeClass CustomResourceDefinition.
Pemilihan ComputeClass dalam workload
Untuk menggunakan ComputeClass untuk workload GKE, Anda memilih
ComputeClass dalam manifes workload menggunakan
pemilih node
untuk label cloud.google.com/compute-class.
Contoh manifes Deployment berikut memilih ComputeClass:
Ganti COMPUTE_CLASS dengan nama ComputeClass yang ada di cluster. Misalnya, Anda dapat menentukan n4
ComputeClass dari
bagian
Tentang resource kustom ComputeClass atau autopilot
ComputeClass bawaan.
Konfigurasi node dalam spesifikasi workload
Cluster GKE Autopilot dan penyediaan otomatis node di GKE Standard memungkinkan Anda menggunakan pemilih node di Pod untuk membuat node yang memiliki properti tertentu seperti kelompok mesin, Spot VM, atau GPU dan TPU. ComputeClasses memungkinkan Anda menentukan persyaratan ini secara terpusat, bukan menambahkan pemilih individual ke setiap workload.
Tentang penerapan ComputeClasses secara default
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 ComputeClasses ke Pod secara default.
Tabel berikut menjelaskan efek menetapkan ComputeClass sebagai default untuk namespace atau untuk cluster:
| Efek ComputeClasses default | |
|---|---|
| Default tingkat namespace |
|
| Default tingkat cluster |
|
Jika GKE menerapkan ComputeClass default tingkat namespace ke Pod, Pod tersebut tidak akan mengaktifkan ComputeClass default tingkat cluster, karena GKE menambahkan pemilih node untuk class default tingkat namespace ke Pod.
Migrasi aktif di ComputeClasses default
Jika ComputeClass yang Anda gunakan sebagai default tingkat namespace atau tingkat cluster memiliki kolom activeMigration.optimizeRulePriority yang ditetapkan ke true, Anda mungkin akan melihat efek berikut:
- Class komputasi default tingkat cluster: migrasi aktif mungkin dipicu jika ada node dengan prioritas lebih rendah dan GKE dapat membuat node dengan prioritas lebih tinggi. Bergantung pada jumlah node berprioritas lebih rendah, migrasi dapat meningkatkan gangguan workload.
- Class komputasi default tingkat namespace: migrasi aktif tidak dipicu karena GKE hanya menyisipkan pemilih node class komputasi ke Pod yang baru dibuat. Pod yang ada tidak otomatis dibuat ulang dengan pemilih.
ComputeClasses default tingkat cluster
Saat Anda mengaktifkan ComputeClasses default tingkat cluster, objek ComputeClass bernama default akan menentukan aturan penskalaan otomatis node untuk cluster. Jika cluster Anda sudah memiliki ComputeClass bernama default, GKE akan menggunakan konfigurasi ComputeClass tersebut untuk cluster. Jika cluster tidak memiliki ComputeClass kustom bernama default, GKE akan berperilaku seolah-olah aturan ComputeClass berikut berlaku:
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
Secara default, GKE tidak menerapkan perilaku penggantian apa pun dan tidak mengubah konfigurasi node yang diskalakan otomatis. Untuk menerapkan properti tertentu ke node yang diskalakan otomatis secara default, Anda harus men-deploy ComputeClass kustom bernama default.
Pertimbangkan hal berikut saat Anda mengonfigurasi class komputasi default tingkat cluster:
- Untuk mencegah Pod stuck dalam status
Pending, tetapkan kolomspec.whenUnsatisfiablekeScaleUpAnyway. Nilai ini memungkinkan GKE membuat node meskipun Pod meminta kelompok mesin Compute Engine yang tidak ada dalam aturan prioritas untuk class default tingkat cluster. Jika Anda ingin memaksa Pod ini menggunakan kelompok mesin yang ada di ComputeClass default, tetapkan kolom ini keDoNotScaleUp. - Untuk membatasi perubahan pada ComputeClass
default, gunakan ClusterRole RBAC untuk membatasi operasi update, patch, delete, dan create pada resourceComputeClassbernamadefault. - Untuk mengubah parameter konsolidasi node default autoscaler cluster, gunakan kolom
spec.autoscalingPolicydalam spesifikasi ComputeClass. Parameter yang Anda tentukan untuk kolom ini di ComputeClass default tingkat cluster berlaku untuk semua node di cluster Anda. Untuk mengetahui informasi selengkapnya, lihat Menetapkan parameter penskalaan otomatis untuk konsolidasi node.
Langkah berikutnya
- Pelajari ComputeClasses bawaan
- Pelajari ComputeClasses kustom
- Baca ComputeClass CustomResourceDefinition
- Men-deploy ComputeClass dan memilihnya dalam workload