Halaman ini menunjukkan cara menjalankan workload fault-tolerant, stateless, atau batch dengan biaya yang lebih rendah menggunakan Spot VM di cluster dan node pool Google Kubernetes Engine (GKE).
Ringkasan
Spot VM adalah virtual machine (VM) Compute Engine yang harganya lebih rendah daripada VM standar default dan tidak memberikan jaminan ketersediaan. Spot VM menawarkan jenis mesin dan opsi yang sama dengan VM Compute Engine standar. Compute Engine dapat mengklaim kembali Spot VM kapan saja karena peristiwa sistem, seperti saat resource diperlukan untuk VM standar.
Untuk mempelajari Spot VM di GKE lebih lanjut, baca artikel tentang Spot VM.
Spot VM menggantikan kebutuhan menggunakan preemptible VM untuk menjalankan workload stateless, batch, atau fault-tolerant. Berbeda dengan preemptible VM, yang masa berlakunya akan habis setelah 24 jam, Spot VM tidak memiliki masa berlaku. Spot VM dihentikan saat Compute Engine memerlukan resource untuk menjalankan VM standar.
Spot VM juga didukung di cluster GKE Autopilot melalui Spot Pod. Dengan Pod Spot, Autopilot otomatis menjadwalkan dan mengelola workload pada Spot VM.
Batasan
- Spot VM tidak mendukung node pool Windows Server.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.
Menyediakan Spot VM di GKE
Anda dapat menyediakan Spot VM dengan membuat cluster yang menggunakan Spot VM untuk node pool default. Atau, Anda dapat membuat node pool yang menggunakan Spot VM.
Gunakan gcloud CLI untuk menetapkan parameter penghentian Spot VM yang lancar. Untuk mengetahui informasi selengkapnya tentang kemampuan menetapkan parameter penghentian yang lancar, fitur yang tersedia dalam Pratinjau, lihat Penghentian dan penghentian Spot VM yang lancar.
Membuat cluster dengan Spot VM
Anda dapat membuat cluster baru menggunakan Spot VM dengan Google Cloud CLI atau konsol Google Cloud .
gcloud
Buat cluster baru yang menggunakan Spot VM di node pool default, bukan VM standar:
gcloud container clusters create CLUSTER_NAME \
--spot
[--system-config-from-file=SYSTEM_CONFIG_PATH]
Ganti CLUSTER_NAME dengan nama cluster baru Anda.
Secara opsional, jika Anda ingin menetapkan parameter penghentian yang lancar
(Pratinjau) untuk
node pool default, ganti SYSTEM_CONFIG_PATH dengan
jalur ke file yang berisi konfigurasi kubelet Anda. Untuk mengetahui informasi selengkapnya, lihat Penghentian Spot VM yang lancar di
GKE.
Anda juga dapat memperbarui parameter ini setelah pembuatan node pool, tetapi
GKE harus membuat ulang
node
untuk melakukan perubahan.
Konsol
Untuk membuat cluster baru dengan node pool menggunakan Spot VM, lakukan langkah-langkah berikut:
Di Google Cloud konsol, buka halaman Create a Kubernetes cluster.
Dari menu navigasi, di bagian Node pools, klik nama node pool yang ingin Anda konfigurasi, lalu klik Nodes.
Centang kotak Enable Spot VMs.
Konfigurasikan cluster sesuai kebutuhan, lalu klik Buat.
Membuat node pool dengan Spot VM
Anda dapat membuat node pool baru menggunakan Spot VM dengan gcloud CLI atau Google Cloud konsol. Anda hanya dapat mengaktifkan Spot VM pada node pool baru. Anda tidak dapat mengaktifkan atau menonaktifkan Spot VM pada node pool yang ada.
gcloud
Buat node pool baru menggunakan Spot VM:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--spot
[--system-config-from-file=SYSTEM_CONFIG_PATH]
Ganti POOL_NAME dengan nama node pool baru Anda.
Secara opsional, jika Anda ingin menetapkan parameter penghentian yang lancar
(Pratinjau), ganti
SYSTEM_CONFIG_PATH dengan jalur ke file
yang berisi konfigurasi kubelet Anda. Untuk mengetahui informasi selengkapnya, lihat Penghentian Spot VM yang lancar di
GKE.
Anda juga dapat memperbarui parameter ini setelah pembuatan node pool, tetapi
GKE harus membuat ulang
node
untuk melakukan perubahan.
Konsol
Untuk membuat node pool baru menggunakan Spot VM, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Google Cloud konsol.
Di daftar cluster, klik nama cluster yang ingin diubah.
Klik tab Nodes.
Klik Create user-managed node pool.
Dari menu navigasi, klik Node.
Centang kotak Enable Spot VMs.
Konfigurasikan node pool sesuai kebutuhan, lalu klik Create.
Menjadwalkan workload di Spot VM
GKE menambahkan cloud.google.com/gke-spot=true dan
cloud.google.com/gke-provisioning=spot (untuk node yang menjalankan
GKE versi 1.25.5-gke.2500 atau yang lebih baru)
label
ke node yang menggunakan Spot VM. Anda dapat memfilter label ini di spesifikasi Pod
menggunakan nodeSelectorkolom
di spesifikasi Pod atau afinitas node.
Pada contoh berikut, Anda membuat cluster dengan dua node pool, salah satunya menggunakan Spot VM. Kemudian, Anda akan men-deploy aplikasi nginx stateless ke Spot VM, menggunakan nodeSelector untuk mengontrol tempat GKE menempatkan Pod.
Buat cluster baru dengan node pool default menggunakan VM standar:
gcloud container clusters create CLUSTER_NAMEGanti
CLUSTER_NAMEdengan nama cluster baru Anda.Dapatkan kredensial untuk cluster:
gcloud container clusters get-credentials CLUSTER_NAMEBuat node pool menggunakan Spot VM:
gcloud container node-pools create POOL_NAME \ --num-nodes=1 \ --spotGanti
POOL_NAMEdengan nama node pool baru Anda.Simpan manifes berikut sebagai file bernama
pi-app.yaml:apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: metadata: labels: app: pi spec: nodeSelector: cloud.google.com/gke-spot: "true" terminationGracePeriodSeconds: 25 containers: - name: pi image: perl:5.34.0 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never backoffLimit: 4Dalam manifes ini, kolom
nodeSelectormemberi tahu GKE untuk hanya menjadwalkan Pod pada node yang menggunakan Spot VM.Terapkan manifes ke cluster Anda:
kubectl apply -f pi-app.yamlDeskripsikan Pod:
kubectl describe pod piOutputnya mirip dengan hal berikut ini:
Name: pi-kjbr9 Namespace: default Priority: 0 Node: gke-cluster-2-spot-pool-fb434072-44ct ... Labels: app=pi job-name=pi Status: Succeeded ... Controlled By: Job/pi Containers: ... Conditions: Type Status Initialized True Ready False ContainersReady False PodScheduled True Volumes: ... Node-Selectors: cloud.google.com/gke-spot=true Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 4m3s default-scheduler Successfully assigned default/pi-kjbr9 to gke-cluster-2-spot-pool-fb434072-44ct Normal Pulling 4m2s kubelet Pulling image "perl:5.34.0" Normal Pulled 3m43s kubelet Successfully pulled image "perl:5.34.0" in 18.481761978s Normal Created 3m43s kubelet Created container pi Normal Started 3m43s kubelet Started container piKolom
Nodemenunjukkan bahwa GKE hanya menjadwalkan Pod Anda di node yang menggunakan Spot VM.
Menggunakan taint dan toleransi untuk Spot VM
Sebagai praktik terbaik, buat cluster dengan setidaknya satu node pool tanpa Spot VM tempat Anda dapat menempatkan workload sistem seperti DNS. Anda dapat menggunakan taint node dan toleransi yang sesuai untuk memberi tahu GKE agar menghindari penempatan workload tertentu di Spot VM.
Untuk membuat node pool dengan node yang menggunakan Spot VM dan memiliki taint node, gunakan flag
--node-taintssaat membuat node pool:gcloud container node-pools create POOL_NAME \ --node-taints=cloud.google.com/gke-spot="true":NoSchedule --spotUntuk menambah toleransi yang sesuai ke Pod yang ingin dijadwalkan ke Spot VM, ubah deployment Anda dan tambahkan hal berikut ke spesifikasi Pod:
tolerations: - key: cloud.google.com/gke-spot operator: Equal value: "true" effect: NoScheduleGKE hanya menjadwalkan Pod dengan toleransi ini ke Spot VM dengan taint node yang ditambahkan.
Langkah berikutnya
- Pelajari cara menjalankan aplikasi GKE di Spot VM dengan node on demand sebagai penggantian.
- Pelajari Spot VM di GKE lebih lanjut.
- Ikuti tutorial tentang cara men-deploy workload batch menggunakan Spot VM di GKE.