Halaman ini menunjukkan cara mengontrol infrastruktur komputasi dan perilaku penskalaan otomatis cluster Google Kubernetes Engine (GKE) berdasarkan kebutuhan khusus workload Anda menggunakan class komputasi kustom. Anda seharusnya sudah memahami konsep class komputasi kustom. Untuk mengetahui detailnya, lihat Tentang class komputasi kustom.
Halaman ini ditujukan untuk administrator platform yang ingin menentukan profil penskalaan otomatis untuk node secara deklaratif, dan untuk operator cluster yang ingin menjalankan workload mereka di class komputasi tertentu.
Tentang class komputasi kustom
Class komputasi kustom adalah Resource Kustom Kubernetes yang memungkinkan Anda menentukan prioritas yang harus diikuti GKE saat menyediakan node untuk menjalankan workload. Anda dapat menggunakan class komputasi kustom untuk melakukan hal berikut:
- Memberikan serangkaian prioritas kepada GKE untuk diikuti secara berurutan saat menyediakan node, masing-masing dengan parameter tertentu seperti seri mesin Compute Engine atau kapasitas resource minimum
- Menentukan parameter dan nilai minimum penskalaan otomatis untuk menghapus node yang kurang digunakan dan menggabungkan workload secara efisien pada kapasitas komputasi yang ada
- Memberi tahu GKE untuk otomatis mengganti konfigurasi node yang kurang disukai dengan konfigurasi node yang lebih disukai untuk performa workload yang optimal
Untuk memahami semua opsi konfigurasi dan cara interaksinya satu sama lain serta dengan mode GKE Autopilot dan mode GKE Standard, lihat Tentang class komputasi kustom.
Harga
Resource kustom ComputeClass
disediakan tanpa biaya tambahan di GKE. Pertimbangan harga berikut berlaku:
Mode Autopilot GKE: Anda ditagih menggunakan mode penagihan berbasis node. Untuk mengetahui detailnya, lihat Harga mode Autopilot.
Mode GKE Standard: lihat Harga mode Standard.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan 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
gcloud components update
.
- Pastikan Anda memiliki cluster GKE yang sudah ada yang menjalankan versi 1.30.3-gke.1451000 atau yang lebih baru. Untuk informasi selengkapnya, lihat Membuat cluster Autopilot.
- Jika Anda menggunakan cluster mode Standar, pastikan Anda memiliki setidaknya satu node pool dengan penskalaan otomatis diaktifkan atau cluster Anda menggunakan penyediaan otomatis node.
Contoh skenario untuk class komputasi
Halaman ini menyajikan contoh skenario yang Anda tentukan untuk class komputasi kustom. Dalam praktiknya, Anda harus mempertimbangkan persyaratan workload dan organisasi tertentu, serta menentukan class komputasi yang memenuhi persyaratan tersebut. Untuk deskripsi lengkap semua opsi class komputasi, dan untuk pertimbangan khusus, lihat Tentang class komputasi kustom.
Pertimbangkan contoh skenario berikut:
- Sasaran Anda adalah mengoptimalkan biaya berjalan untuk beban kerja Anda
- Workload Anda bersifat fault-tolerant dan tidak memerlukan penghentian tuntas atau runtime yang diperpanjang
- Workload Anda memerlukan minimal 64 vCPU agar dapat berjalan secara optimal
- Anda dibatasi pada seri mesin Compute Engine N2
Berdasarkan contoh skenario, Anda memutuskan bahwa Anda menginginkan class komputasi yang melakukan hal berikut:
- Memprioritaskan node Spot N2 yang memiliki minimal 64 vCPU
- Memungkinkan GKE kembali ke node Spot N2, terlepas dari kapasitas komputasi
- Jika tidak ada node Spot N2 yang tersedia, izinkan GKE menggunakan node N2 on-demand
- Memberi tahu GKE untuk memindahkan workload Anda ke node Spot setiap kali node tersebut tersedia lagi
Mengonfigurasi class komputasi dalam mode Autopilot
Di GKE Autopilot, Anda menentukan class komputasi, men-deploy-nya ke cluster, dan meminta class komputasi tersebut dalam workload Anda. GKE melakukan langkah-langkah konfigurasi node, seperti menerapkan label dan taint, untuk Anda.
Simpan manifes berikut sebagai compute-class.yaml
:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: cost-optimized
spec:
priorities:
- machineFamily: n2
spot: true
minCores: 64
- machineFamily: n2
spot: true
- machineFamily: n2
spot: false
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
Mengonfigurasi class komputasi dalam mode Standar
Di cluster mode GKE Standard, Anda menentukan class compute, setelah itu Anda mungkin harus melakukan konfigurasi manual untuk memastikan penjadwalan Pod class compute sesuai yang diharapkan. Konfigurasi manual bergantung pada apakah node pool Anda disediakan secara otomatis, sebagai berikut:
- Node pool yang dikelola oleh penyediaan otomatis node: Tidak memerlukan konfigurasi manual. Penyediaan otomatis node akan otomatis melakukan langkah-langkah konfigurasi class komputasi untuk Anda. Untuk mengetahui detailnya, lihat Penyediaan otomatis node dan class komputasi.
- Node pool yang dibuat secara manual: Konfigurasi manual diperlukan. Anda harus menambahkan label node dan taint node ke node pool yang dibuat secara manual untuk mengaitkan node dengan class komputasi tertentu. Untuk mengetahui detailnya, lihat Mengonfigurasi kumpulan node yang dibuat secara manual untuk penggunaan class komputasi.
Menggunakan class komputasi dengan node pool yang dibuat secara manual
Bagian ini menunjukkan cara menentukan class komputasi di cluster yang hanya menggunakan node pool yang dibuat secara manual.
Simpan manifes berikut sebagai
compute-class.yaml
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: cost-optimized spec: priorities: - machineFamily: n2 spot: true minCores: 64 - machineFamily: n2 spot: false activeMigration: optimizeRulePriority: true
Buat node pool baru yang diskalakan otomatis yang menggunakan Spot VM dan kaitkan dengan class komputasi:
gcloud container node-pools create cost-optimized-pool \ --location=LOCATION \ --cluster=CLUSTER_NAME \ --machine-type=n2-standard-64 \ --spot \ --enable-autoscaling \ --max-nodes=9 \ --node-labels="cloud.google.com/compute-class=cost-optimized" \ --node-taints="cloud.google.com/compute-class=cost-optimized:NoSchedule"
Ganti kode berikut:
LOCATION
: lokasi cluster Anda.CLUSTER_NAME
: nama cluster yang ada.
Buat node pool baru yang diskalakan secara otomatis dengan VM on-demand dan kaitkan dengan class komputasi:
gcloud container node-pools create on-demand-pool \ --location=LOCATION \ --cluster=CLUSTER_NAME \ --machine-type=n2-standard-64 \ --enable-autoscaling \ --max-nodes=9 \ --num-nodes=0 \ --node-labels="cloud.google.com/compute-class=cost-optimized" \ --node-taints="cloud.google.com/compute-class=cost-optimized:NoSchedule"
Saat Anda men-deploy Pod yang meminta class komputasi ini dan node baru perlu
dibuat, GKE akan memprioritaskan pembuatan node di
node pool cost-optimized-pool
. Jika node baru tidak dapat dibuat, GKE akan membuat node di node pool on-demand-pool
.
Untuk mengetahui detail selengkapnya tentang cara kumpulan node yang dibuat secara manual berinteraksi dengan class compute kustom, lihat Mengonfigurasi kumpulan node yang dibuat secara manual untuk penggunaan class compute.
Menggunakan class komputasi dengan node pool yang disediakan otomatis
Bagian ini menunjukkan cara menentukan class komputasi di cluster yang menggunakan penyediaan otomatis node.
Simpan manifes berikut sebagai compute-class.yaml
:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: cost-optimized
spec:
priorities:
- machineFamily: n2
spot: true
minCores: 64
- machineFamily: n2
spot: true
- machineFamily: n2
spot: false
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
Saat Anda men-deploy Pod yang meminta class komputasi ini dan node baru perlu
dibuat, GKE akan memprioritaskan pembuatan node dalam item urutan di
kolom priorities
. Jika diperlukan, GKE akan membuat node pool baru yang memenuhi persyaratan hardware class komputasi.
Untuk mengetahui detail selengkapnya tentang cara kerja penyediaan otomatis node dengan class komputasi kustom, lihat Penyediaan otomatis node dan class komputasi.
Menyesuaikan nilai minimum penskalaan otomatis untuk penggabungan node
Secara default, GKE menghapus node yang kurang dimanfaatkan dan menjadwalkan ulang
workload Anda ke node lain yang tersedia. Anda dapat menyesuaikan lebih lanjut nilai minimum dan waktu setelah node menjadi kandidat untuk dihapus menggunakan kolom autoscalingPolicy
dalam definisi class komputasi, seperti dalam contoh berikut:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: cost-optimized
spec:
priorities:
- machineFamily: n2
spot: true
minCores: 64
- machineFamily: n2
spot: true
- machineFamily: n2
spot: false
activeMigration:
optimizeRulePriority: true
autoscalingPolicy:
consolidationDelayMinutes : 5
consolidationThreshold : 70
Contoh ini membuat node menjadi kandidat penghapusan jika tidak digunakan sepenuhnya oleh 70% kapasitas CPU dan memori yang tersedia selama lebih dari lima menit. Untuk mengetahui daftar parameter yang tersedia, lihat Menetapkan parameter penskalaan otomatis untuk penggabungan node.
Men-deploy class komputasi di cluster
Setelah Anda menentukan class komputasi, deploy ke cluster:
kubectl apply -f compute-class.yaml
Class komputasi ini siap digunakan di cluster. Anda dapat meminta class komputasi dalam spesifikasi Pod atau, secara opsional, menetapkannya sebagai class komputasi default di namespace tertentu.
Menetapkan class komputasi default untuk namespace
Saat Anda menetapkan class komputasi default untuk namespace, GKE akan menggunakan class komputasi tersebut untuk membuat node bagi setiap Pod yang Anda deploy di namespace tersebut. Jika Pod secara eksplisit meminta class komputasi yang berbeda, permintaan tingkat Pod akan menggantikan default namespace.
Untuk menetapkan class komputasi sebagai default untuk namespace tertentu, lakukan hal berikut:
Buat namespace
kubectl create namespace cost-optimized-ns
Beri label namespace dengan class komputasi:
kubectl label namespaces cost-optimized-ns \ cloud.google.com/default-compute-class=cost-optimized
Meminta class komputasi dalam workload
Untuk meminta class komputasi dalam workload, tambahkan pemilih node untuk class komputasi tersebut dalam manifes Anda.
Simpan manifes berikut sebagai
cc-workload.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: custom-workload spec: replicas: 2 selector: matchLabels: app: custom-workload template: metadata: labels: app: custom-workload spec: nodeSelector: cloud.google.com/compute-class: cost-optimized containers: - name: test image: gcr.io/google_containers/pause resources: requests: cpu: 1.5 memory: "4Gi"
Men-deploy workload:
kubectl apply -f cc-workload.yaml
Saat Anda men-deploy workload ini, GKE akan otomatis menambahkan toleransi ke Pod yang sesuai dengan taint node untuk class komputasi yang diminta. Toleransi ini memastikan bahwa hanya Pod yang meminta class compute yang berjalan di node class compute.