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. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah 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 bagi penonaktifan yang benar untuk VM Spot. Untuk mengetahui informasi selengkapnya tentang kemampuan untuk menyetel parameter penonaktifan yang benar, fitur yang tersedia di Pratinjau, lihat Penghentian dan penonaktifan yang benar pada Spot VM.
Membuat cluster dengan Spot VM
Anda dapat membuat cluster baru menggunakan Spot VM dengan Google Cloud CLI atau Konsol Google Cloud. 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 untuk penonaktifan yang benar
(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 benar 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 konsol Google Cloud , 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 konsol. Google Cloud 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 untuk penonaktifan yang benar
(Pratinjau), ganti
SYSTEM_CONFIG_PATH dengan jalur ke file
yang berisi konfigurasi kubelet Anda. Untuk mengetahui informasi selengkapnya, lihat Penghentian
Spot VM yang benar 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 konsol Google Cloud .
Di daftar cluster, klik nama cluster yang ingin diubah.
Klik tab Nodes.
Klik Buat kumpulan node yang dikelola pengguna.
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 label 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) ke node yang menggunakan Spot VM. Anda dapat memfilter label ini di spesifikasi Pod
menggunakan kolom nodeSelector
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.