Halaman ini menjelaskan cara menggunakan class komputasi kustom untuk mengontrol properti node yang disediakan Google Kubernetes Engine (GKE) saat penskalaan otomatis cluster Anda. Dokumen ini ditujukan untuk administrator platform yang ingin menentukan profil penskalaan otomatis untuk node secara deklaratif, beban kerja tertentu yang dijalankan pada perangkat keras yang memenuhi persyaratan mereka.
Ringkasan class Compute
Di GKE, class komputasi 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 biaya konfigurasi untuk biaya operasional yang lebih murah. Class komputasi kustom memungkinkan Anda menentukan profil yang kemudian digunakan GKE untuk menyediakan node yang memenuhi persyaratan beban kerja tertentu.
Class komputasi kustom tersedia untuk digunakan di GKE Mode Autopilot dan mode GKE Standard dalam versi 1.30.3-gke.1451000 dan yang lebih baru, serta menawarkan pendekatan deklaratif untuk mendefinisikan atribut node dan prioritas penskalaan otomatis. Tersedia class komputasi kustom 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 class komputasi agar diprioritaskan oleh GKE. Jika sebagian besar pilihan konfigurasi tidak tersedia, GKE secara otomatis memilih konfigurasi berikutnya dalam hierarki. Model penggantian ini memastikan meskipun resource komputasi tidak tersedia, workload Anda tetap berjalan pada perangkat keras yang dioptimalkan dengan penundaan penjadwalan minimal.
- Kontrol penskalaan otomatis terperinci: Menentukan konfigurasi node yang terbaik cocok untuk workload tertentu. GKE memprioritaskan konfigurasi saat membuat node selama penskalaan.
- Konfigurasi infrastruktur deklaratif: Mengadopsi pendekatan deklaratif dalam pengelolaan infrastruktur, sehingga GKE secara otomatis membuat node untuk Anda yang sesuai dengan persyaratan workload spesifik Anda.
- Migrasi aktif: Jika resource komputasi untuk mesin yang lebih dipilih konfigurasi kustom tersedia di lokasi Anda, GKE akan otomatis memigrasikan workload Anda ke node baru yang menggunakan konfigurasi Anda.
- Pengoptimalan biaya: Prioritaskan jenis node yang hemat biaya seperti Spot VM untuk mengurangi biaya cluster Anda.
- Class komputasi default untuk namespace: Tetapkan class komputasi default di setiap namespace Kubernetes, sehingga workload di namespace tersebut berjalan perangkat keras yang dioptimalkan meskipun tidak meminta kelas komputasi tertentu.
- Nilai minimum penggabungan node kustom: Menentukan penggunaan resource kustom minimum untuk node. Jika penggunaan resource node tertentu berada di bawah GKE, GKE mencoba untuk mengonsolidasikan beban kerja ke dalam sebuah node serupa, yang tersedia, dan memperkecil skala node yang kurang dimanfaatkan.
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 perangkat keras {i>default<i} untuk beban kerja yang tim tertentu berjalan, menghilangkan beban dari operator aplikasi.
- Anda menjalankan workload yang berperforma optimal di Compute Engine tertentu seri mesin atau konfigurasi hardware tertentu.
- Anda ingin mendeklarasikan konfigurasi hardware yang memenuhi persyaratan bisnis tertentu, persyaratan performa tinggi, seperti performa tinggi, pengoptimalan biaya, atau ketersediaan tinggi.
- Anda ingin GKE secara hierarkis kembali menggunakan selama ketidaktersediaan resource komputasi, workload selalu berjalan pada komputer yang sesuai dengan kebutuhan mereka.
- Anda ingin memutuskan konfigurasi optimal secara terpusat di seluruh perangkat perusahaan, sehingga biaya Anda lebih dapat diprediksi dan workload berjalan lebih andal.
Batasan
Anda tidak dapat menggunakan class komputasi kustom dengan kapasitas Compute Engine reservasi dalam mode Autopilot atau dalam penyediaan otomatis Kumpulan node mode standar. Mode Standar yang dibuat secara manual kumpulan node mendukung reservasi kapasitas.
Cara kerja class komputasi kustom
Class komputasi kustom adalah resource kustom Kubernetes yang menyediakan
infrastruktur Google Cloud. Anda menentukan objek ComputeClass
di
lakukan cluster, lalu minta class komputasi tersebut
dalam workload atau setel komputasi tersebut
sebagai default untuk namespace Kubernetes. Saat Anda men-deploy workload yang
kelas komputasi, GKE mencoba menempatkan Pod pada
yang memenuhi persyaratan class komputasi.
Guna memastikan bahwa class komputasi kustom dioptimalkan untuk fleet Anda, pertimbangkan pedoman berikut:
- Pahami persyaratan komputasi fleet Anda, termasuk setiap 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 dengan CPU tinggi.
- Tentukan kelompok mesin dan rangkaian mesin Compute Engine yang yang paling sesuai dengan workload Anda. Untuk mengetahui detailnya, lihat Panduan perbandingan dan referensi kelompok mesin.
- Rencanakan strategi penggantian dalam setiap class komputasi agar workload selalu yang berjalan pada node yang menggunakan konfigurasi mesin serupa. Misalnya, jika N4 seri mesin tidak tersedia, Anda dapat beralih kembali ke komputer N2.
Lihat definisi resource kustom lengkap
Guna melihat definisi resource kustom (CRD) lengkap untuk ComputeClass
resource kustom, jalankan perintah berikut:
kubectl describe crd computeclasses.cloud.google.com
{i>Output<i} menampilkan seluruh CRD, termasuk semua isian yang didukung dan hubungan antar {i>field<i}. Untuk lebih memahami class komputasi kustom, lihat ke 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, lakukan langkah-langkah berikut:
- Memilih prioritas komputasi penggantian: Tentukan serangkaian aturan yang mengatur properti {i>node<i} yang GKE dibuat untuk class komputasi.
- Konfigurasikan node pool dan class komputasi GKE Standard: Untuk cluster mode Standar, lakukan langkah-langkah konfigurasi yang diperlukan untuk menggunakan class komputasi dengan kumpulan node Anda.
- Menentukan 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: beri tahu GKE kapan harus menggabungkan workload dan menghapus aset yang kurang dimanfaatkan node.
- Mengonfigurasi migrasi aktif ke node dengan prioritas yang lebih tinggi: secara opsional, beri tahu GKE untuk memindahkan workload ke pilihan yang lebih {i>node <i}saat perangkat keras tersedia.
Memilih prioritas komputasi penggantian Anda
Keuntungan utama menggunakan class komputasi kustom adalah memiliki kontrol atas strategi penggantian saat node pilihan Anda tidak tersedia karena faktor seperti kehabisan resource dan keterbatasan kuota.
Anda membuat strategi penggantian dengan menentukan daftar aturan prioritas di di class Compute Engine, Saat sebuah cluster perlu ditingkatkan skalanya, GKE memprioritaskan pembuatan node yang cocok dengan aturan prioritas pertama. Jika GKE tidak dapat membuat node tersebut, GKE akan kembali ke prioritas berikutnya aturan, yang mengulangi proses ini hingga GKE berhasil meningkatkan mengelompokkan atau menghabiskan semua aturan. Jika semua aturan sudah tidak berlaku, GKE membuat node berdasarkan perilaku default atau yang ditentukan dijelaskan dalam Menentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku.
Aturan prioritas
Anda menentukan aturan prioritas di kolom spec.priorities
dari ComputeClass
resource kustom. Setiap aturan di kolom priorities
mendeskripsikan properti
untuk disediakan oleh node. GKE memproses kolom priorities
di
urutannya, yang berarti bahwa item pertama di
bidang adalah prioritas tertinggi untuk
untuk penyediaan node.
Tergantung pada jenis aturan prioritas, Anda dapat menentukan mesin tambahan
properti, seperti Spot VM atau kapasitas CPU minimum, untuk
GKE yang akan digunakan saat menyediakan node. Kolom priorities
mendukung jenis aturan prioritas berikut:
machineFamily
: Menentukan node menggunakan mesin Compute Engine serial, sepertin2
atauc3
.machineType
: Menentukan node menggunakan Compute Engine yang telah ditetapkan sepertin2-standard-4
.nodepools
: Dalam cluster GKE Standard, menyediakan berisi daftar node pool yang dibuat secara manual di mana 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 di samping jenis aturan machineFamily
:
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 boot disk enkripsi.
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 mesin Compute Engine yang telah ditetapkan
seperti n2-standard-32
. Jenis mesin harus mendukung GPU apa pun yang
yang Anda tentukan.
Anda dapat menggunakan kolom berikut bersama dengan jenis aturan machineType
:
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 boot disk enkripsi.storage.bootDiskSize
: Ukuran dalam GB untuk boot disk node.storage.localSSDCount
: Jumlah SSD lokal yang akan dipasang ke node. Jika ditentukan, minimal harus1
.
gpu
: Mengonfigurasi GPU.gpu.type
: Jenis GPU, sepertinvidia-l4
. Untuk mengetahui detailnya, lihat Men-deploy workload GPU dalam mode Autopilot.gpu.count
: Jumlah GPU yang akan dipasang. Untuk kuantitas yang didukung menurut Jenis GPU, lihat Jumlah GPU yang didukung.
Contoh berikut menunjukkan aturan machineType
untuk mesin n2-standard-32
jenis:
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 node pool
Kolom nodepools
mengambil daftar kumpulan node yang sudah ada
GKE mencoba membuat Pod yang tertunda. GKE tidak
memproses nilai di isian ini
secara berurutan. Anda tidak dapat menentukan komputer lain
properti di samping kolom ini dalam item aturan prioritas yang sama. Bidang ini adalah
hanya didukung pada mode GKE Standard. Untuk mengetahui detail penggunaan,
lihat Menargetkan kumpulan node 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 memproses daftar aturan di kolom priorities
spesifikasi ComputeClass
secara berurutan.
Misalnya, perhatikan 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 prioritas ini , GKE mencocokkan node sebagai berikut:
- GKE menempatkan Pod pada node yang ada dan terkait dengan class komputasi ini.
- Jika node yang ada tidak dapat mengakomodasi Pod, GKE akan menyediakan node baru yang menggunakan seri mesin N2 adalah Spot VM, dan memiliki setidaknya 64 vCPU.
- Jika VM Spot N2 dengan minimal 64 vCPU tidak tersedia di region, GKE menyediakan node baru yang menggunakan N2 Spot VM yang sesuai dengan Pod, berapa pun jumlah dengan inti.
- Jika tidak ada Spot VM N2 yang tersedia di region ini, GKE menyediakan VM N2 on-demand baru.
- Jika tidak ada aturan sebelumnya yang dapat dipenuhi, GKE akan mengikuti logika dalam Bagian Tentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku.
Node pool dan class komputasi GKE Standard
Jika Anda menggunakan mode GKE Standard, Anda mungkin harus melakukan untuk memastikan Pod class komputasi Anda dijadwalkan yang diharapkan.
- Kumpulan node yang dikelola oleh penyediaan otomatis node: Tidak ada konfigurasi manual tidak diperlukan. Penyediaan otomatis node secara otomatis menjalankan class komputasi langkah-langkah konfigurasi untuk Anda. Untuk mengetahui detailnya, lihat Class komputasi dan penyediaan otomatis node.
- Kumpulan node yang dibuat secara manual: Konfigurasi manual diperlukan. Anda harus menambahkan label node dan taint node ke kumpulan node yang dibuat secara manual untuk menghubungkan node dengan class komputasi tertentu. Untuk mengetahui detailnya, lihat Konfigurasikan kumpulan node yang dibuat secara manual untuk penggunaan class komputasi.
Mengonfigurasi kumpulan node yang dibuat secara manual untuk penggunaan class komputasi
Jika cluster GKE Standard memiliki kumpulan node yang dapat dibuat secara manual tanpa penyediaan otomatis node, Anda harus mengonfigurasi node tersebut kumpulan resource untuk mengaitkannya dengan class komputasi tertentu. Khusus GKE menjadwalkan Pod yang meminta class komputasi tertentu pada node dalam kumpulan node yang yang Anda kaitkan dengan class komputasi tersebut. Autopilot GKE node pool mode GKE Standard yang telah dibuat oleh penyediaan otomatis node akan otomatis melakukan konfigurasi ini untuk Anda.
Untuk mengaitkan kumpulan node yang dibuat secara manual dengan class komputasi, tambahkan node
label dan taint node ke kumpulan node 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
di class Compute Engine,
Misalnya, perintah berikut mengupdate kumpulan node yang ada dan atribusi
dengan class compute 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 kumpulan node di cluster dengan satu class komputasi kustom. Pod yang dijadwalkan GKE pada node pool yang dibuat secara manual saja memicu pembuatan node di dalam kumpulan node tersebut selama peristiwa penskalaan otomatis.
Class komputasi dan penyediaan otomatis node
Anda dapat menggunakan penyediaan otomatis node dengan class komputasi kustom GKE secara otomatis membuat dan menghapus node pool berdasarkan aturan prioritas.
Untuk menggunakan penyediaan otomatis node dengan class komputasi, Anda harus melakukan tindakan berikut:
- Pastikan Anda telah mengaktifkan penyediaan otomatis node di cluster.
- Tambahkan kolom
nodePoolAutoCreation
dengan nilaienabled: true
ke SpesifikasiComputeClass
.
GKE kemudian dapat menempatkan Pod yang menggunakan class komputasi yang mengonfigurasi penyediaan otomatis node pada kumpulan node baru. GKE memutuskan apakah akan meningkatkan skala kumpulan node yang ada atau membuat kumpulan node baru berdasarkan faktor seperti ukuran cluster dan persyaratan Pod. Pod dengan class komputasi yang jangan konfigurasi penyediaan otomatis node, lanjutkan untuk hanya menskalakan node yang ada Google Cloud.
Anda dapat menggunakan class komputasi yang berinteraksi dengan penyediaan otomatis node bersama dengan class komputasi yang berinteraksi dengan kumpulan node yang dibuat secara manual cluster yang sama.
Pertimbangkan interaksi berikut dengan penyediaan otomatis node:
- Anda tidak dapat menggunakan kelompok mesin atau Spot VM pemilih node karena pemilih ini bertentangan dengan perilaku class komputasi. GKE menolak Pod apa pun yang meminta class komputasi dan juga Spot VM atau seri mesin tertentu.
- Anda dapat mengonfigurasi penyediaan otomatis node untuk class komputasi yang menggunakan
nodepools
untuk merujuk ke kumpulan node yang ada. Penyediaan otomatis node memproses prioritas secara berurutan dan mencoba menskalakan node yang ada untuk menempatkan Pod Anda.
Pertimbangkan contoh berikut untuk cluster yang keduanya dibuat secara manual kumpulan node 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:
- Buat node baru di kumpulan node
manually-created-pool
. - Menyediakan node N2, baik dalam kumpulan node N2 yang sudah ada atau dengan membuat node baru kumpulan node.
- Jika tidak dapat membuat node N2, GKE akan mencoba meningkatkan skala kumpulan node N2D yang ada atau membuat kumpulan node N2D baru.
Menargetkan kumpulan node tertentu dalam definisi class komputasi
Kolom priorities.nodepools
memungkinkan Anda menentukan daftar
kumpulan node tempat GKE mencoba menjadwalkan Pod dalam
dalam cluster GKE Standard yang menggunakan cluster
penskalaan otomatis. 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 class komputasi yang memiliki node bernama
Namun, GKE akan mencoba menjadwalkan Pod yang tertunda pada node tersebut
Google Cloud. GKE mungkin membuat {i>node<i} baru
dalam kumpulan node tersebut untuk menempatkan
Pod.
Kumpulan node yang Anda tentukan di kolom priorities.nodepools
harus berupa
terkait dengan class komputasi tersebut menggunakan label node dan taint node, sebagaimana
yang dijelaskan dalam
Bagian Mengonfigurasi kumpulan node yang dibuat secara manual untuk class komputasi.
Daftar kumpulan node yang Anda tentukan di kolom nodepools
tidak memiliki
prioritas Anda. Agar dapat mengonfigurasi urutan fallback untuk kumpulan node yang dinamai, Anda harus menentukan
beberapa item priorities.nodepools
terpisah. Misalnya, pertimbangkan
spesifikasi berikut:
spec:
...
priorities:
- nodepools: [pool1, pool2]
- nodepools: [pool3]
Dalam contoh ini, GKE mula-mula mencoba
menempatkan Pod tertunda yang
meminta class komputasi ini pada node yang ada dalam kumpulan node yang diberi label
dengan class compute. Jika node yang ada tidak tersedia, GKE
mencoba menyediakan node baru di pool1
atau pool2
. Jika GKE tidak dapat
menyediakan node baru dalam kumpulan node ini, GKE mencoba
menyediakan Pod baru di pool3
.
Menentukan perilaku penskalaan saat tidak ada aturan prioritas yang berlaku
Resource kustom ComputeClass
memungkinkan Anda menentukan GKE
harus dilakukan jika tidak ada {i>node<i} yang
dapat memenuhi salah satu aturan prioritas. Tujuan
Kolom whenUnsatisfiable
dalam spesifikasi mendukung nilai berikut:
ScaleUpAnyway
: Membuat node baru yang menggunakan mesin default cluster konfigurasi Anda. Ini adalah perilaku default.- Di cluster Autopilot, GKE menempatkan Pod pada {i>node<i} baru atau yang sudah ada, terlepas dari konfigurasi mesin {i>node<i}.
- Pada cluster Standar yang tidak menggunakan penyediaan otomatis node, GKE mencoba meningkatkan skala node pool yang dibuat secara manual menentukan label dan taint yang cocok dengan class komputasi tertentu.
- Dalam cluster Standar yang menggunakan penyediaan otomatis node, GKE mungkin membuat kumpulan node baru yang menggunakan alamat IP default untuk menempatkan Pod.
DoNotScaleUp
: Biarkan Pod dalam statusPending
hingga node yang yang memenuhi persyaratan class komputasi.
Menetapkan parameter penskalaan otomatis untuk konsolidasi node
Secara default, GKE menghilangkan node yang kurang dimanfaatkan saat menjalankan workload interaktif, mengonsolidasikan workload tersebut di node lain yang memiliki kapasitas. Sebagai semua kelas komputasi, ini adalah perilaku {i>default<i} karena semua cluster yang menggunakan kelas komputasi harus menggunakan autoscaler cluster atau Autopilot klaster. Selama konsolidasi node, GKE menghabiskan node yang kurang dimanfaatkan, membuat ulang workload di node lain, lalu menghapus {i>node<i} yang terkuras.
Waktu dan kriteria untuk penghapusan node bergantung pada
profil penskalaan otomatis.
Anda dapat menyesuaikan nilai minimum resource yang kurang dimanfaatkan yang memicu node
penghapusan dan penggabungan beban kerja menggunakan bagian autoscalingPolicy
di
definisi class komputasi kustom Anda. Anda dapat menyesuaikan hal berikut
parameter:
consolidationDelayMinutes
: Jumlah menit setelahnya GKE menghapus node yang kurang dimanfaatkanconsolidationThreshold
: Batas pemakaian untuk CPU dan memori sebagai persentase resource node yang tersedia. Khusus GKE mempertimbangkan node untuk dihapus jika penggunaan resource kurang dari ini nilai minimum.gpuConsolidationThreshold
: Batas pemakaian untuk GPU sebagai persentase resource node yang tersedia. Khusus GKE mempertimbangkan node untuk dihapus jika penggunaan resource kurang dari ini nilai minimum. Sebaiknya tetapkan ini ke100
atau0
agar GKE menggabungkan node apa pun yang pemakaiannya tidak mencapai 100% GPU terpasang.
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 menghapus node yang tidak digunakan setelah lima menit, dan node hanya menjadi kandidat untuk konsolidasi jika CPU-nya dan penggunaan memori 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 secara otomatis menggantikan node lama di class komputasi daftar prioritas penggantian dengan node baru yang posisinya lebih tinggi di daftar prioritas tersebut. Hal ini memastikan bahwa semua Pod yang berjalan pada akhirnya berjalan di platform yang paling Anda sukai untuk class komputasi tersebut, meskipun GKE awalnya harus menjalankan Pod tersebut pada node yang kurang disukai.
Saat migrasi aktif terjadi, GKE membuat node baru berdasarkan aturan prioritas class komputasi, lalu menghabiskan dan menghapus node prioritas. Migrasi dilakukan secara bertahap untuk meminimalkan gangguan beban kerja. Migrasi aktif memiliki pertimbangan berikut:
- Migrasi aktif hanya tersedia di class komputasi yang menggunakan
machineFamily
jenis aturan prioritas. Jika class komputasi Anda memilikinodepools
ataumachineType
aturan prioritas, migrasi aktif tidak didukung. - Jika Anda telah mengaktifkan penyediaan otomatis node di cluster Standar, aktif migrasi mungkin memicu pembuatan kumpulan node baru jika node yang ada kumpulan tidak memenuhi kriteria prioritas lebih tinggi yang ditentukan dalam komputasi kustom Anda .
- Untuk menghindari gangguan beban kerja yang kritis, migrasi aktif tidak akan memindahkan
Pod berikut ini:
- 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 melalui node E2:
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 N2 node akan tersedia untuk disediakan nanti, seperti jika kuota Anda meningkat atau jika VM N2 tersedia di lokasi Anda, GKE membuat node N2 baru dan secara bertahap memigrasikan Pod dari node N2D yang ada ke node N2 yang baru. GKE kemudian menghapus node N2D yang sudah tidak digunakan.
Meminta class komputasi dalam workload
Untuk menggunakan class komputasi kustom setelah selesai mendesainnya, Pod harus secara eksplisit meminta class komputasi tersebut dalam spesifikasi Pod. Anda dapat secara opsional menetapkan class komputasi sebagai default di Kubernetes tertentu untuk namespace, Pod dalam namespace tersebut akan menggunakan class komputasi tersebut kecuali jika Pod meminta class komputasi yang berbeda.
Untuk mendapatkan petunjuk tentang cara meminta dan menggunakan class komputasi di GKE, lihat Kontrol atribut node yang diskalakan secara otomatis dengan class komputasi kustom.