Tentang class komputasi kustom


Halaman ini menjelaskan cara menggunakan class komputasi kustom untuk mengontrol properti node yang disediakan Google Kubernetes Engine (GKE) saat menskalakan cluster secara otomatis. Dokumen ini ditujukan bagi administrator platform yang ingin menentukan profil penskalaan otomatis secara deklaratif untuk node, sehingga workload tertentu berjalan di hardware yang memenuhi persyaratannya.

Ringkasan class komputasi

Di GKE, compute class adalah profil yang terdiri dari kumpulan atribut node yang digunakan GKE untuk menyediakan node yang menjalankan workload Anda. Class komputasi dapat menargetkan pengoptimalan tertentu, seperti menyediakan node berperforma tinggi atau memprioritaskan konfigurasi yang dioptimalkan biaya untuk biaya pengoperasian yang lebih murah. Class komputasi Kustom memungkinkan Anda menentukan profil yang kemudian digunakan GKE untuk menyediakan node yang sangat memenuhi persyaratan workload tertentu.

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

Manfaat class komputasi kustom

Class komputasi kustom menawarkan manfaat berikut:

  • Prioritas komputasi penggantian: Menentukan hierarki konfigurasi node di setiap kelas komputasi agar GKE dapat memprioritaskannya. Jika konfigurasi yang paling diinginkan 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 terperinci: Menentukan konfigurasi node yang paling cocok untuk workload tertentu. GKE memprioritaskan konfigurasi tersebut saat membuat node selama penskalaan.
  • Konfigurasi infrastruktur deklaratif: Mengadopsi pendekatan deklaratif untuk pengelolaan infrastruktur sehingga GKE otomatis membuat node untuk Anda yang sesuai dengan persyaratan workload tertentu.
  • 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 lebih disukai.
  • Pengoptimalan biaya: Prioritaskan jenis node yang hemat biaya seperti VM Spot untuk mengurangi pengeluaran cluster Anda.
  • Class komputasi default untuk namespace: Tetapkan class komputasi default di setiap namespace Kubernetes, sehingga workload di namespace tersebut berjalan di hardware yang dioptimalkan meskipun tidak meminta class komputasi tertentu.
  • Batas penggabungan node kustom: Menentukan batas penggunaan resource kustom untuk node. Jika penggunaan resource node tertentu berada di bawah nilai minimum, GKE akan mencoba menggabungkan workload ke dalam node serupa yang tersedia dan menskalakan node yang kurang digunakan.

Kasus penggunaan untuk class komputasi kustom

Pertimbangkan untuk menggunakan class komputasi kustom dalam skenario seperti berikut:

  • Anda ingin menjalankan workload AI/ML pada konfigurasi GPU tertentu.
  • Anda ingin menetapkan konfigurasi hardware default untuk beban kerja yang dijalankan tim tertentu, sehingga mengurangi overhead dari operator aplikasi.
  • Anda menjalankan workload yang berperforma optimal pada konfigurasi hardware atau rangkaian mesin Compute Engine tertentu.
  • Anda ingin mendeklarasikan konfigurasi hardware yang memenuhi persyaratan bisnis tertentu, seperti performa tinggi, pengoptimalan biaya, atau ketersediaan tinggi.
  • Anda ingin GKE secara hierarkis kembali menggunakan konfigurasi hardware tertentu selama resource komputasi tidak tersedia, sehingga workload Anda selalu berjalan di mesin yang sesuai dengan persyaratannya.
  • Anda ingin memutuskan konfigurasi yang optimal secara terpusat di seluruh armada perusahaan, sehingga biaya Anda lebih dapat diprediksi dan beban kerja Anda berjalan dengan lebih andal.
  • Anda ingin menentukan secara terpusat pemesanan kapasitas Compute Engine mana yang harus digunakan GKE untuk menyediakan node baru untuk beban kerja tertentu.

Cara kerja class komputasi kustom

Class komputasi kustom adalah resource kustom Kubernetes yang menyediakan infrastruktur Google Cloud. Anda menentukan objek ComputeClass di cluster, lalu meminta class komputasi tersebut dalam workload atau menetapkan class komputasi tersebut sebagai default untuk namespace Kubernetes. Saat Anda men-deploy workload yang meminta class komputasi, GKE akan mencoba menempatkan Pod di node yang memenuhi persyaratan class komputasi.

Untuk memastikan class komputasi kustom dioptimalkan untuk fleet Anda, pertimbangkan panduan berikut:

  • Pahami persyaratan komputasi untuk perangkat Anda, termasuk persyaratan hardware khusus aplikasi.
  • Tentukan tema yang memandu desain setiap class komputasi. Misalnya, class komputasi yang dioptimalkan untuk performa mungkin memiliki strategi penggantian yang hanya menggunakan jenis mesin ber-CPU tinggi.
  • Tentukan kelompok mesin dan seri 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 class komputasi sehingga beban kerja selalu berjalan di node yang menggunakan konfigurasi mesin serupa. Misalnya, jika seri mesin N4 tidak tersedia, Anda dapat kembali ke mesin N2.

Melihat definisi resource kustom lengkap

Untuk melihat definisi resource kustom (CRD) lengkap untuk resource kustom ComputeClass, jalankan perintah berikut:

kubectl describe crd computeclasses.cloud.google.com

Output akan menampilkan seluruh CRD, termasuk semua kolom yang didukung dan hubungan antar-kolom. Untuk lebih memahami class komputasi kustom, lihat definisi ini saat Anda membaca dokumen ini.

Merencanakan class komputasi kustom

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

  1. Pilih prioritas komputasi penggantian: Tentukan serangkaian aturan yang mengatur properti node yang dibuat GKE untuk class komputasi.
  2. Mengonfigurasi node pool dan class komputasi GKE Standard: Untuk cluster mode Standard, lakukan langkah-langkah konfigurasi yang diperlukan untuk menggunakan class komputasi dengan node pool Anda.
  3. Menentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku: secara opsional, beri tahu GKE tindakan yang harus dilakukan jika node yang memenuhi aturan prioritas Anda tidak dapat disediakan.
  4. Menetapkan parameter penskalaan otomatis untuk penggabungan node: beri tahu GKE kapan harus menggabungkan workload dan menghapus node yang kurang digunakan.
  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, minta GKE untuk menggunakan reservasi zona Compute Engine yang ada saat membuat node baru.

Memilih prioritas komputasi penggantian

Keuntungan utama menggunakan class komputasi kustom adalah memiliki kontrol atas strategi penggantian saat node pilihan Anda tidak tersedia karena faktor seperti kehabisan resource dan batasan kuota.

Anda membuat strategi penggantian dengan menentukan daftar aturan prioritas di class komputasi kustom. Saat cluster perlu diskalakan, GKE akan memprioritaskan pembuatan node yang cocok dengan aturan prioritas pertama. Jika GKE tidak dapat membuat node tersebut, GKE akan kembali ke aturan prioritas berikutnya, yang akan 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.

Aturan prioritas

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

Bergantung pada jenis aturan prioritas, Anda dapat menentukan properti mesin tambahan, seperti Spot VM atau kapasitas CPU minimum, untuk digunakan GKE saat menyediakan node. Kolom priorities mendukung jenis aturan prioritas berikut:

  • machineFamily: Menentukan node menggunakan seri mesin Compute Engine, seperti n2 atau c3.
  • machineType: Menentukan node menggunakan jenis mesin Compute Engine yang telah ditetapkan, seperti n2-standard-4.
  • nodepools: Di cluster GKE Standard, menyediakan daftar node pool yang dibuat secara manual dan dikaitkan dengan class compute tempat GKE harus menyediakan node.

Jenis aturan machineFamily

Kolom machineFamily menerima seri mesin Compute Engine seperti n2 atau c3. Jika tidak ditentukan, defaultnya adalah e2. Anda dapat menggunakan kolom berikut bersama jenis aturan machineFamily:

  • 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.

Contoh berikut menunjukkan aturan prioritas machineFamily:

priorities:
- machineFamily: n2
  spot: true
  minCores: 16
  minMemoryGb: 64
  storage:
    bootDiskKMSKey: projects/example/locations/us-central1/keyRings/example/cryptoKeys/key-1

Jenis aturan machineType

Kolom machineType menerima jenis mesin bawaan Compute Engine, seperti n2-standard-32. Jenis mesin harus mendukung GPU apa pun yang Anda tentukan.

Anda dapat menggunakan kolom berikut bersama dengan jenis aturan machineType:

  • spot: Menggunakan Spot VM. Default-nya adalah false.
  • storage: Mengonfigurasi penyimpanan node.
    • storage.bootDiskType: Jenis disk booting.
    • storage.bootDiskKMSKey: Jalur ke kunci Cloud KMS yang akan digunakan untuk enkripsi disk booting.
    • storage.bootDiskSize: Ukuran dalam GB untuk disk booting node.
    • storage.localSSDCount: Jumlah SSD lokal yang akan dilampirkan ke node. Jika ditentukan, harus minimal 1.
  • gpu: Mengonfigurasi GPU.

Contoh berikut menunjukkan aturan machineType untuk jenis mesin n2-standard-32:

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

Contoh berikut menunjukkan aturan machineType untuk GPU:

priorities:
- machineType: g2-standard-16
  spot: false
  gpu:
    type: nvidia-l4
    count: 1

jenis aturan nodepools

Kolom nodepools mengambil daftar node pool yang ada tempat GKE mencoba membuat Pod yang tertunda. GKE tidak memproses nilai di kolom ini secara berurutan. Anda tidak dapat menentukan properti mesin lain bersama kolom ini dalam item aturan prioritas yang sama. Kolom ini hanya didukung pada mode GKE Standard. Untuk mengetahui detail penggunaan, lihat Menargetkan node pool tertentu dalam definisi class komputasi.

Cara GKE membuat node menggunakan aturan prioritas

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

Misalnya, pertimbangkan spesifikasi berikut:

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

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

  1. GKE menempatkan Pod di node yang ada dan terkait dengan class komputasi ini.
  2. Jika node yang ada tidak dapat mengakomodasi Pod, GKE akan menyediakan node baru yang menggunakan seri mesin N2, merupakan Spot VM, dan memiliki setidaknya 64 vCPU.
  3. Jika Spot VM N2 dengan minimal 64 vCPU tidak tersedia di region, GKE akan menyediakan node baru yang menggunakan Spot VM N2 yang dapat menampung Pod, terlepas dari jumlah core.
  4. Jika tidak ada Spot VM N2 yang tersedia di region, GKE akan menyediakan VM N2 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.

Node pool dan class komputasi GKE Standard

Jika menggunakan mode GKE Standard, Anda mungkin harus melakukan konfigurasi manual untuk memastikan Pod class komputasi Anda dijadwalkan seperti yang diharapkan.

Mengonfigurasi node pool yang dibuat secara manual untuk penggunaan class komputasi

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 class komputasi tertentu. GKE hanya menjadwalkan Pod yang meminta class komputasi tertentu pada node di node pool yang Anda kaitkan dengan class komputasi tersebut. Mode GKE Autopilot dan node pool 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 class komputasi, Anda harus menambahkan label node dan taint node ke node pool selama pembuatan atau selama update dengan menentukan flag --node-labels dan flag --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 class komputasi kustom Anda.

Misalnya, perintah berikut memperbarui node pool yang ada dan mengaitkannya dengan class komputasi dev-class:

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

Anda dapat mengaitkan setiap node pool di cluster dengan satu class komputasi 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 class komputasi

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

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

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

GKE kemudian dapat menempatkan Pod yang menggunakan class komputasi yang mengonfigurasi penyediaan otomatis node di node pool baru. GKE memutuskan apakah akan meningkatkan skala node pool yang ada atau membuat node pool baru berdasarkan faktor seperti ukuran cluster dan persyaratan Pod. Pod dengan class komputasi yang tidak mengonfigurasi penyediaan otomatis node akan terus hanya menskalakan node pool yang ada.

Anda dapat menggunakan class komputasi yang berinteraksi dengan penyediaan otomatis node bersama dengan class komputasi yang berinteraksi dengan node pool yang dibuat secara manual di cluster yang sama.

Pertimbangkan interaksi berikut dengan penyediaan otomatis node:

  • Anda tidak dapat menggunakan pemilih node kelompok mesin atau VM Spot karena pemilih ini bertentangan dengan perilaku class komputasi. GKE menolak Pod yang meminta class komputasi dan juga meminta VM Spot atau seri mesin tertentu.
  • Anda dapat mengonfigurasi penyediaan otomatis node untuk class komputasi 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: n2
  - machineFamily: n2d
  nodePoolAutoCreation:
    enabled: true

Dalam contoh ini, GKE mencoba melakukan hal berikut:

  1. Buat node baru di node pool manually-created-pool.
  2. Sediakan node N2, baik di node pool N2 yang ada atau dengan membuat node pool baru.
  3. Jika tidak dapat membuat node N2, GKE akan mencoba menskalakan node pool N2D yang ada atau membuat node pool N2D baru.

Menargetkan node pool tertentu dalam definisi class komputasi

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

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

Daftar node pool yang Anda tentukan di kolom nodepools tidak memiliki prioritas. Untuk mengonfigurasi urutan penggantian untuk node pool 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 tertunda yang meminta class komputasi ini di node yang ada di node pool yang diberi label dengan class komputasi. 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 aturan prioritas. Kolom whenUnsatisfiable dalam spesifikasi mendukung nilai berikut:

  • ScaleUpAnyway: Membuat node baru yang menggunakan konfigurasi mesin default cluster. Ini adalah perilaku default.
    • 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 kumpulan node yang dibuat secara manual yang menentukan label dan taint yang cocok dengan class komputasi 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: Membiarkan Pod dalam status Pending hingga node yang memenuhi persyaratan class komputasi tersedia.

Menetapkan parameter penskalaan otomatis untuk penggabungan node

Secara default, GKE menghapus node yang kurang dimanfaatkan dengan menjalankan beban kerja, yang menggabungkan beban kerja tersebut di node lain yang memiliki kapasitas. Untuk semua class komputasi, ini adalah perilaku default karena semua cluster yang menggunakan class komputasi harus menggunakan autoscaler cluster atau merupakan cluster Autopilot. Selama konsolidasi node, GKE akan mengosongkan node yang kurang digunakan, 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 nilai minimum pemanfaatan resource yang memicu penghapusan node dan konsolidasi workload menggunakan bagian autoscalingPolicy dalam definisi class komputasi kustom. Anda dapat menyesuaikan parameter berikut:

  • consolidationDelayMinutes: Jumlah menit setelahnya GKE menghapus node yang kurang digunakan
  • consolidationThreshold: Nilai minimum penggunaan untuk CPU dan memori sebagai persentase dari resource yang tersedia di node. GKE hanya mempertimbangkan node untuk dihapus jika penggunaan resource kurang dari nilai minimum ini.
  • gpuConsolidationThreshold: Nilai minimum penggunaan untuk GPU sebagai persentase dari resource yang tersedia di node. GKE hanya mempertimbangkan node untuk dihapus jika penggunaan resource kurang dari nilai minimum ini. Sebaiknya tetapkan ini ke 100 atau 0 sehingga GKE menggabungkan node yang tidak memiliki penggunaan GPU yang terpasang sebesar 100%.

Perhatikan contoh berikut:

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

Dalam konfigurasi ini, GKE akan menghapus node yang tidak digunakan setelah lima menit, dan node hanya menjadi kandidat untuk penggabungan 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 class komputasi kustom yang otomatis mengganti node yang ada yang lebih rendah dalam daftar prioritas penggantian class komputasi 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 inginkan untuk class komputasi tersebut, meskipun GKE awalnya harus menjalankan Pod tersebut di node yang kurang disukai.

Saat migrasi aktif terjadi, GKE membuat node baru berdasarkan aturan prioritas class komputasi, lalu menghabiskan dan menghapus node prioritas rendah yang sudah tidak digunakan lagi. Migrasi dilakukan secara bertahap untuk meminimalkan gangguan beban kerja. Migrasi aktif memiliki pertimbangan berikut:

  • Jika Anda telah mengaktifkan penyediaan otomatis node di cluster Standar, migrasi aktif mungkin memicu pembuatan node pool baru jika node pool yang ada tidak memenuhi kriteria prioritas yang lebih tinggi yang ditentukan dalam class compute kustom Anda.
  • 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".

Pertimbangkan contoh spesifikasi class komputasi berikut, yang memprioritaskan node N2 daripada node N2D:

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

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

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 Google Cloud tertentu, Anda dapat mengonfigurasi setiap prioritas penggantian di class komputasi kustom sehingga GKE menggunakan pemesanan saat membuat node baru.

Menggunakan reservasi di class komputasi 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 class komputasi. Anda juga dapat terus menggunakan reservasi saat membuat node pool secara manual di cluster.
  • Class komputasi yang mengonfigurasi SSD lokal harus menggunakan aturan prioritas machineType, bukan machineFamily. Untuk mengetahui detailnya, lihat bagian jenis aturan machineType.

Pertimbangkan contoh spesifikasi class komputasi berikut, yang memilih pemesanan bersama tertentu untuk digunakan saat menyediakan instance n2 untuk node:

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

Jika Anda men-deploy Pod yang menggunakan class komputasi shared-specific-reservations, GKE akan mencoba menggunakan reservasi n2-shared-reservation saat membuat instance n2 baru untuk menjalankan Pod. Jika reservasi tidak memiliki kapasitas yang tersedia, operasi penskalaan akan gagal.

Anda dapat menggunakan jenis reservasi berikut:

  • Reservasi satu project tertentu: konfigurasikan kolom berikut:

    • reservations.specific.name: nama reservasi.
    • reservations.affinity: harus Specific.
  • Reservasi bersama tertentu: konfigurasikan kolom berikut:

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

    • reservations.affinity: harus AnyBestEffort.
    • Jangan menetapkan nama atau project reservasi.

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

  • Reservasi tertentu: GKE mencoba aturan prioritas berikutnya di class komputasi.
  • Reservasi yang cocok: GKE mencoba menyediakan node on-demand yang memenuhi persyaratan aturan prioritas tersebut. Jika GKE tidak dapat menyediakan node on-demand, GKE akan mencoba aturan prioritas berikutnya di class komputasi.

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

Meminta class komputasi dalam workload

Untuk menggunakan class komputasi kustom setelah Anda selesai mendesainnya, Pod Anda harus meminta class komputasi tersebut secara eksplisit dalam spesifikasi Pod. Anda dapat menetapkan class komputasi sebagai default di namespace Kubernetes tertentu secara opsional. Dalam hal ini, Pod di namespace tersebut akan menggunakan class komputasi tersebut kecuali jika Pod meminta class komputasi yang berbeda.

Untuk petunjuk cara meminta dan menggunakan class komputasi di GKE, lihat Mengontrol atribut node yang diskalakan otomatis dengan class komputasi kustom.

Langkah selanjutnya