Halaman ini menjelaskan cara kerja penyediaan otomatis node di cluster Google Kubernetes Engine (GKE) Standar. Dengan penyediaan otomatis node, node diskalakan secara otomatis untuk memenuhi persyaratan workload Anda.
Dengan cluster Autopilot, Anda tidak perlu menyediakan node atau mengelola node pool secara manual karena GKE secara otomatis mengelola penskalaan dan penyediaan node.
Alasan menggunakan penyediaan otomatis node
Penyediaan otomatis node mengelola dan menskalakan serangkaian node pool secara otomatis atas nama pengguna. Tanpa penyediaan otomatis node, autoscaler cluster GKE akan membuat node hanya dari node pool yang dibuat pengguna. Dengan penyediaan otomatis node, GKE secara otomatis membuat dan menghapus node pool.
Fitur yang tidak didukung
Penyediaan otomatis node tidak membuat node pool yang menggunakan salah satu fitur berikut. Namun, autoscaler cluster akan menskalakan node di node pool yang ada dengan fitur berikut:
- GKE Sandbox.
- Sistem operasi Windows.
- Mengontrol afinitas pemesanan.
- Penskalaan otomatis PersistentVolumes lokal.
- Node penyediaan otomatis dengan SSD lokal sebagai penyimpanan sementara.
- Penyediaan otomatis melalui penjadwalan kustom yang menggunakan Filter yang telah diubah.
- Mengonfigurasi multi-threading simultan (SMT).
- Mengonfigurasi unit pemantauan performa (PMU).
- Jenis mesin C4D dengan versi GKE yang lebih lama dari 1.32.3-gke.1717000. Penyediaan otomatis node untuk jenis mesin C4D hanya didukung di GKE versi 1.32.3-gke.1717000 dan yang lebih baru.
- Jenis mesin C3D dengan versi GKE yang lebih lama dari 1.28. Penyediaan otomatis node untuk jenis mesin C3D hanya didukung di GKE versi 1.28 dan yang lebih baru.
Cara kerja penyediaan otomatis node
Penyediaan otomatis node adalah mekanisme autoscaler cluster. Autoscaler cluster hanya menskalakan node pool yang ada. Dengan penyediaan otomatis node diaktifkan, autoscaler cluster dapat membuat node pool secara otomatis berdasarkan spesifikasi Pod yang tidak dapat dijadwalkan.
Penyediaan otomatis node membuat node pool berdasarkan informasi berikut:
- Permintaan resource CPU, memori, dan penyimpanan efemeral.
- Permintaan GPU.
- Afinitas node dan pemilih label Pod yang tertunda.
- Taint dan toleransi node pada Pod yang tertunda.
Batas resource
Penyediaan otomatis node dan autoscaler cluster memiliki batas pada tingkat berikut:
- Level node pool: node pool yang disediakan secara otomatis dibatasi hingga 1.000 node.
- Level cluster:
- Batas penyediaan otomatis yang Anda tetapkan akan diterapkan berdasarkan total resource CPU dan memori yang digunakan di semua node pool, bukan hanya kumpulan yang disediakan secara otomatis.
- Autoscaler cluster tidak membuat node baru jika tindakan tersebut akan melebihi salah satu batas yang ditentukan. Jika batas terlampaui, GKE tidak akan menghapus node.
Pemisahan workload
Jika Pod yang tertunda memiliki afinitas dan toleransi node, penyediaan otomatis node dapat menyediakan node dengan label dan taint yang cocok.
Penyediaan otomatis node dapat membuat node pool dengan label dan taint jika semua kondisi berikut terpenuhi:
- Pod yang tertunda memerlukan node dengan kunci label dan nilai tertentu.
- Pod memiliki toleransi untuk taint dengan kunci yang sama.
- Toleransi tersebut adalah untuk efek
NoSchedule
, efekNoExecute
, atau semua efek.
Untuk mendapatkan petunjuk, lihat Mengonfigurasi pemisahan workload di GKE.
Batasan penggunaan label untuk pemisahan workload
Penyediaan otomatis node memicu pembuatan node pool baru saat Anda menggunakan label yang didukung oleh penyediaan otomatis node, seperti cloud.google.com/gke-spot
atau family mesin. Anda dapat menggunakan label lain dalam manifes Pod untuk mempersempit
node tempat GKE menempatkan Pod, tetapi GKE tidak akan menggunakan
label ini untuk menyediakan node pool baru. Untuk mengetahui daftar label yang tidak
secara eksplisit memicu pembuatan node pool, lihat Batasan pemisahan workload dengan taint dan toleransi.
Penghapusan node pool yang disediakan secara otomatis
Jika tidak ada node dalam node pool yang disediakan secara otomatis, GKE akan menghapus node pool tersebut. GKE tidak menghapus node pool yang tidak disediakan secara otomatis.
Jenis mesin yang didukung
Penyediaan otomatis node mempertimbangkan persyaratan Pod di cluster Anda untuk menentukan jenis node yang paling sesuai dengan Pod tersebut.
Secara default, GKE menggunakan seri mesin E2 kecuali jika salah satu kondisi berikut berlaku:
- Workload meminta fitur yang tidak tersedia di seri mesin E2. Misalnya, jika GPU diminta oleh workload, rangkaian mesin N1 digunakan untuk node pool baru.
- Workload meminta TPU resource. Untuk mempelajari TPU lebih lanjut, baca Pengantar Cloud TPU.
- Workload menggunakan label
machine-family
. Untuk informasi selengkapnya, lihat Menggunakan keluarga mesin kustom.
Jika Pod meminta GPU, penyediaan otomatis node akan menetapkan jenis mesin yang cukup besar untuk mendukung jumlah GPU yang diminta Pod. Jumlah GPU membatasi CPU dan memori yang dapat dimiliki node. Untuk mengetahui informasi selengkapnya, lihat platform GPU.
Jenis mesin C4D didukung dengan GKE versi 1.32.3-gke.1717000 dan yang lebih baru, dan jenis mesin C3D didukung dengan GKE versi 1.28 dan yang lebih baru.
Gambar node yang didukung
Penyediaan otomatis node membuat node pool menggunakan salah satu image node berikut:
- Container-Optimized OS (
cos_containerd
). - Ubuntu (
ubuntu_containerd
).
Akselerator machine learning yang didukung
Penyediaan otomatis node dapat membuat node pool dengan akselerator hardware seperti GPU dan Cloud TPU. Penyediaan otomatis node mendukung TPU di GKE versi 1.28 dan yang lebih baru.
GPU
Jika Pod meminta GPU, penyediaan otomatis node akan menetapkan jenis mesin yang cukup besar untuk mendukung jumlah GPU yang diminta Pod. Jumlah GPU membatasi CPU dan memori yang dapat dimiliki node. Untuk mengetahui informasi selengkapnya, lihat platform GPU.
Cloud TPU
GKE mendukung Tensor Processing Unit (TPU) untuk mempercepat beban kerja machine learning. Node pool slice TPU host tunggal dan node pool slice TPU multi-host mendukung penskalaan otomatis dan penyediaan otomatis.
Dengan tanda
--enable-autoprovisioning
di cluster GKE,
GKE membuat atau menghapus node pool slice TPU host tunggal atau multi-host dengan versi dan topologi TPU yang memenuhi persyaratan workload yang tertunda.
Saat Anda menggunakan --enable-autoscaling
, GKE menskalakan node pool berdasarkan jenisnya, sebagai berikut:
Node pool slice TPU host tunggal: GKE menambahkan atau menghapus node TPU di node pool yang ada. Node pool dapat berisi sejumlah node TPU antara nol dan ukuran maksimum node pool sebagaimana ditentukan oleh flag --max-nodes dan --total-max-nodes. Saat node pool diskalakan, semua node TPU dalam node pool memiliki jenis mesin dan topologi yang sama. Untuk mempelajari lebih lanjut cara membuat node pool slice TPU host tunggal, lihat Membuat node pool.
Node pool slice TPU multi-host: GKE akan menskalakan node pool secara atomik dari nol hingga jumlah node yang diperlukan untuk memenuhi topologi TPU. Misalnya, dengan TPU node pool dengan jenis mesin
ct5lp-hightpu-4t
dan topologi16x16
, node pool berisi 64 node. Penskalator otomatis GKE memastikan bahwa node pool ini memiliki tepat 0 atau 64 node. Saat menskalakan kembali, GKE akan mengeluarkan semua pod terjadwal, dan menghentikan seluruh node pool hingga nol. Untuk mempelajari lebih lanjut cara membuat node pool slice TPU multi-host, lihat Membuat node pool.
Jika slice TPU tertentu tidak memiliki Pod yang berjalan atau tertunda untuk dijadwalkan, GKE akan memperkecil skala node pool. Node pool slice TPU multi-host mengalami pengecilan skala secara atomik. Node pool slice TPU host tunggal diperkecil dengan menghapus slice TPU host tunggal individual.
Saat Anda mengaktifkan penyediaan otomatis node dengan TPU, GKE akan membuat
keputusan penskalaan berdasarkan nilai yang ditentukan dalam permintaan Pod. Manifes berikut
adalah contoh spesifikasi Deployment yang menghasilkan satu node pool yang berisi slice TPU v4 dengan topologi 2x2x2
dan dua
mesin ct4p-hightpu-4t
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tpu-workload
labels:
app: tpu-workload
spec:
replicas: 2
selector:
matchLabels:
app: nginx-tpu
template:
metadata:
labels:
app: nginx-tpu
spec:
nodeSelector:
cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
cloud.google.com/gke-tpu-topology: 2x2x2
cloud.google.com/reservation-name: my-reservation
containers:
- name: nginx
image: nginx:1.14.2
resources:
requests:
google.com/tpu: 4
limits:
google.com/tpu: 4
ports:
- containerPort: 80
Dengan keterangan:
cloud.google.com/gke-tpu-accelerator
: Versi dan jenis TPU. Misalnya, Anda dapat menggunakan salah satu hal berikut:- TPU v4 dengan
tpu-v4-podslice
- TPU v5e dengan
tpu-v5-lite-podslice
. - TPU v5p dengan
tpu-v5p-slice
. - TPU Trillium (v6e) dengan
tpu-v6e-slice
.
- TPU v4 dengan
cloud.google.com/gke-tpu-topology
: Jumlah dan pengaturan fisik TPU chip dalam slice TPU. Saat membuat node pool dan mengaktifkan penyediaan otomatis node, Anda perlu memilih topologi TPU. Untuk mengetahui informasi selengkapnya tentang topologi Cloud TPU, lihat Konfigurasi TPU.limit.google.com/tpu
: Jumlah TPU chip di VM TPU. Sebagian besar konfigurasi hanya memiliki satu nilai yang benar. Namun,tpu-v5-lite-podslice
dengan konfigurasi topologi2x4
:- Jika Anda menentukan
google.com/tpu = 8
, penyediaan otomatis node akan meningkatkan skala node pool slice TPU host tunggal dengan menambahkan satu mesinct5lp-hightpu-8t
. - Jika Anda menentukan
google.com/tpu = 4
, penyediaan otomatis node akan membuat node pool slice TPU multi-host dengan dua mesinct5lp-hightpu-4t
.
- Jika Anda menentukan
cloud.google.com/reservation-name
: Nama pemesanan yang digunakan workload. Jika dihilangkan, workload tidak akan menggunakan pemesanan apa pun.
Jika Anda menyetel jenis akselerator ke tpu-v6e-slice
(untuk menunjukkan TPU Trillium),
penyediaan otomatis node akan membuat keputusan berikut:
Nilai yang ditetapkan dalam manifes Pod | Ditentukan oleh penyediaan otomatis node | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
Jenis node pool | Ukuran node pool | Machine type |
1x1 | 1 | Slice TPU host tunggal | Fleksibel | ct6e-standard-1t |
2x2 | 4 | Slice TPU host tunggal | Fleksibel | ct6e-standard-4t |
2x4 | 8 | Slice TPU host tunggal | Fleksibel | ct6e-standard-8t |
2x4 | 4 | Slice TPU multi-host | 2 | ct6e-standard-4t |
4x4 | 4 | Slice TPU multi-host | 4 | ct6e-standard-4t |
4x8 | 4 | Slice TPU multi-host | 8 | ct6e-standard-4t |
8x8 | 4 | Slice TPU multi-host | 16 | ct6e-standard-4t |
8x16 | 4 | Slice TPU multi-host | 32 | ct6e-standard-4t |
16x16 | 4 | Slice TPU multi-host | 64 | ct6e-standard-4t |
Jika Anda menyetel jenis akselerator ke tpu-v4-podslice
(untuk menunjukkan TPU v4), penyediaan otomatis node akan membuat keputusan berikut:
Nilai yang ditetapkan dalam manifes Pod | Ditentukan oleh penyediaan otomatis node | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
Jenis node pool | Ukuran node pool | Machine type |
2x2x1 | 4 | Slice TPU host tunggal | Fleksibel | ct4p-hightpu-4t |
{A}x{B}x{C} | 4 | Slice TPU multi-host | {A}x{B}x{C}/4 | ct4p-hightpu-4t |
Produk dari {A}x{B}x{C} menentukan jumlah chip di node pool. Misalnya, Anda dapat menentukan topologi kecil yang terdiri dari 64 chip dengan kombinasi seperti
4x4x4
. Jika Anda menggunakan topologi yang lebih besar dari 64 chip, nilai yang Anda tetapkan ke {A},{B}, dan {C} harus memenuhi kondisi berikut:
- {A},{B}, dan {C} semuanya lebih rendah dari atau sama dengan empat, atau kelipatan dari empat.
- Topologi terbesar yang didukung adalah
12x16x16
. - Nilai yang ditetapkan mempertahankan pola A ≤ B ≤ C. Misalnya,
2x2x4
atau2x4x4
untuk topologi kecil.
Jika Anda menyetel jenis akselerator ke tpu-v5-lite-podslice
(untuk menunjukkan TPU v5e
dengan jenis mesin yang dimulai dengan ct5lp-
), penyediaan otomatis node akan membuat
keputusan berikut:
Nilai yang ditetapkan dalam manifes Pod | Ditentukan oleh penyediaan otomatis node | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
Jenis node pool | Ukuran node pool | Machine type |
1x1 | 1 | Slice TPU host tunggal | Fleksibel | ct5lp-hightpu-1t |
2x2 | 4 | Slice TPU host tunggal | Fleksibel | ct5lp-hightpu-4t |
2x4 | 8 | Slice TPU host tunggal | Fleksibel | ct5lp-hightpu-8t |
2x41 | 4 | Slice TPU multi-host | 2 (8/4) | ct5lp-hightpu-4t |
4x4 | 4 | Slice TPU multi-host | 4 (16/4) | ct5lp-hightpu-4t |
4x8 | 4 | Slice TPU multi-host | 8 (32/4) | ct5lp-hightpu-4t |
4x8 | 4 | Slice TPU multi-host | 16 (32/4) | ct5lp-hightpu-4t |
8x8 | 4 | Slice TPU multi-host | 16 (64/4) | ct5lp-hightpu-4t |
8x16 | 4 | Slice TPU multi-host | 32 (128/4) | ct5lp-hightpu-4t |
16x16 | 4 | Slice TPU multi-host | 64 (256/4) | ct5lp-hightpu-4t |
-
Kasus khusus saat jenis mesin bergantung pada nilai yang Anda tentukan di kolom batas
google.com/tpu
. ↩
Untuk mempelajari petunjuk tentang menyiapkan penyediaan otomatis node, lihat Mengonfigurasi TPU.
Dukungan untuk Spot VM
Penyediaan otomatis node mendukung pembuatan node pool berdasarkan Spot VM.
Membuat node pool berdasarkan Spot VM hanya dipertimbangkan jika
pod yang tidak dapat dijadwalkan dengan toleransi untuk
taint cloud.google.com/gke-spot="true":NoSchedule
tersedia. Taint akan otomatis diterapkan ke node dalam node pool yang disediakan secara otomatis berdasarkan Spot VM.
Anda dapat membuat kombinasi menggunakan toleransi dengan nodeSelector
atau aturan afinitas node
untuk label node cloud.google.com/gke-spot="true"
atau
cloud.google.com/gke-provisioning=spot
(untuk node yang menjalankan GKE versi 1.25.5-gke.2500 atau lebih baru) untuk memastikan bahwa workload Anda hanya berjalan di node pool berdasarkan Spot VM.
Dukungan untuk Pod yang meminta penyimpanan sementara
Penyediaan otomatis node mendukung pembuatan node pool saat Pod meminta penyimpanan sementara. Ukuran boot disk yang disediakan dalam node pool bersifat konstan untuk semua node pool baru yang disediakan secara otomatis. Ukuran boot disk ini dapat disesuaikan.
Defaultnya adalah 100 GiB. Penyimpanan sementara yang didukung oleh SSD lokal tidak didukung.
Penyediaan otomatis node akan menyediakan node pool hanya jika penyimpanan sementara yang dapat dialokasikan untuk sebuah node dengan boot disk yang ditentukan lebih besar dari atau sama dengan permintaan penyimpanan sementara dari Pod yang tertunda ini. Jika permintaan penyimpanan sementara lebih tinggi dari yang dapat dialokasikan, penyediaan otomatis node tidak akan menyediakan node pool. Ukuran disk untuk node tidak dikonfigurasi secara dinamis berdasarkan permintaan penyimpanan sementara dari Pod yang tertunda.
Batasan skalabilitas
Penyediaan otomatis node memiliki batasan yang sama seperti autoscaler cluster.
Anda juga harus mempertimbangkan batas node pool untuk workload yang berbeda. Workload yang berbeda mengacu pada penggunaan pemisahan workload untuk memberi tahu GKE agar memisahkan Pod ke node yang berbeda, menempatkan Pod di node yang memenuhi kriteria tertentu, atau menjadwalkan workload tertentu secara bersamaan.
Penyediaan otomatis node selalu lebih memilih menggunakan node pool yang kompatibel dan sudah ada daripada membuat yang baru. Kekuatan preferensi ini meningkat seiring bertambahnya jumlah kumpulan node dalam cluster. Saat jumlah node pool yang berbeda mendekati batas yang didukung, penyediaan otomatis node tidak memprioritaskan pembuatan node pool baru. Untuk mengetahui informasi selengkapnya tentang batas cluster, lihat bagian batas dan praktik terbaik di Merencanakan cluster besar.
Untuk cluster dengan banyak persyaratan workload yang berbeda, sebaiknya gunakan class komputasi kustom.
Langkah berikutnya
- Pelajari lebih lanjut cara mengaktifkan penyediaan otomatis node
- Pelajari autoscaler cluster lebih lanjut