Halaman ini menunjukkan cara mengontrol infrastruktur komputasi dan penskalaan otomatis perilaku cluster Google Kubernetes Engine (GKE) berdasarkan kebutuhan spesifik workload Anda menggunakan class komputasi kustom. Anda seharusnya sudah familier dengan konsep class komputasi kustom. Untuk mengetahui detailnya, lihat Tentang class komputasi kustom.
Dokumen ini ditujukan untuk administrator platform yang ingin secara deklaratif menentukan profil penskalaan otomatis untuk node, dan untuk operator cluster yang ingin menjalankan workload di kelas komputasi tertentu.
Tentang class komputasi kustom
Class komputasi kustom adalah Kubernetes Resource Kustom yang memungkinkan Anda menentukan prioritas yang harus diikuti GKE saat menyediakan node untuk menjalankan workload Anda. Anda dapat menggunakan class komputasi kustom untuk lakukan hal berikut:
- Beri GKE sekumpulan prioritas untuk diikuti secara berurutan saat menyediakan node, masing-masing dengan parameter tertentu seperti Kapasitas resource minimum atau seri mesin Compute Engine
- Menentukan batas dan parameter penskalaan otomatis untuk menghapus data yang kurang dimanfaatkan node dan mengonsolidasikan workload secara efisien pada kapasitas komputasi yang ada
- Memberi tahu GKE untuk otomatis mengganti node yang kurang disukai dengan lebih banyak konfigurasi node pilihan untuk workload yang optimal performa
Untuk memahami semua opsi konfigurasi dan bagaimana opsi tersebut berinteraksi dengan mode GKE Autopilot dan GKE Mode standar, lihat Tentang class komputasi kustom.
Harga
Resource kustom ComputeClass
disediakan tanpa biaya tambahan di
hanya pada container yang tepercaya. 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 standar.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Mengaktifkan 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 sudah memiliki cluster GKE versi yang berjalan 1.30.3-gke.1451000 atau yang lebih baru. Untuk informasi selengkapnya, lihat Buat cluster Autopilot.
- Jika menggunakan cluster mode Standar, pastikan Anda memiliki setidaknya satu kumpulan node, autoscaling telah diaktifkan atau yang digunakan oleh cluster Anda penyediaan otomatis node.
Contoh skenario untuk class komputasi
Dokumen ini menampilkan contoh skenario di mana Anda mendefinisikan komputasi kustom . Dalam praktiknya, Anda harus mempertimbangkan persyaratan dari workload dan organisasi yang berbeda, dan menentukan kelas komputasi yang memenuhi lainnya. Untuk deskripsi lengkap dari semua opsi untuk class komputasi, dan untuk pertimbangan khusus, lihat Tentang class komputasi kustom.
Perhatikan contoh skenario berikut:
- Sasaran Anda adalah mengoptimalkan biaya pengoperasian untuk workload
- Workload Anda fault-tolerant dan tidak memerlukan penonaktifan secara halus atau runtime yang diperpanjang
- Workload Anda memerlukan setidaknya 64 vCPU agar dapat berjalan secara optimal
- Anda hanya dapat menggunakan seri mesin Compute Engine N2
Berdasarkan contoh skenario, Anda memutuskan bahwa Anda menginginkan class komputasi yang melakukan hal berikut:
- Memprioritaskan node N2 Spot yang memiliki setidaknya 64 vCPU
- Memungkinkan GKE beralih kembali ke node N2 Spot mana pun, terlepas dari komputasi kapasitas
- Jika tidak ada node N2 Spot yang tersedia, izinkan GKE menggunakan N2 secara on-demand node
- Memberi tahu GKE untuk memindahkan workload Anda ke node Spot setiap kali 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 di workload Anda. GKE menjalankan setiap 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
Dalam cluster mode Standar GKE, Anda menentukan yang lebih lama, setelah itu Anda mungkin harus melakukan konfigurasi manual untuk memastikan bahwa sesuai dengan jadwal Pod class komputasi Anda. Konfigurasi manual bergantung pada apakah kumpulan node Anda disediakan secara otomatis atau tidak, sebagai berikut:
- 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.
Menggunakan class komputasi dengan kumpulan node yang dibuat secara manual
Bagian ini menunjukkan cara menentukan class komputasi dalam cluster yang hanya menggunakan kumpulan node 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
Membuat kumpulan node baru yang diskalakan secara otomatis yang menggunakan Spot VM dan dengan class compute:
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.
Membuat kumpulan node baru yang diskalakan secara otomatis dengan VM on-demand dan mengaitkannya dengan class compute:
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"
Ketika Anda men-deploy Pod yang meminta class komputasi ini, dan node baru harus
dibuat, GKE memprioritaskan pembuatan node di
Kumpulan node cost-optimized-pool
. Jika node baru tidak dapat dibuat,
GKE membuat node di kumpulan node on-demand-pool
.
Untuk detail selengkapnya tentang cara kumpulan node yang dibuat secara manual berinteraksi dengan kelas komputasi, melihat Konfigurasikan kumpulan node yang dibuat secara manual untuk penggunaan class komputasi.
Menggunakan class komputasi dengan kumpulan node yang disediakan otomatis
Bagian ini menunjukkan cara menentukan class komputasi di cluster yang menggunakan node penyediaan otomatis.
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
Ketika Anda men-deploy Pod yang meminta class komputasi ini, dan node baru harus
dibuat, GKE memprioritaskan pembuatan node dalam urutan item di
Kolom priorities
. Jika diperlukan, GKE membuat kumpulan node baru yang
memenuhi persyaratan hardware kelas komputasi.
Untuk mengetahui detail selengkapnya tentang cara kerja penyediaan otomatis node dengan komputasi kustom kelas, melihat Class komputasi dan penyediaan otomatis node.
Menyesuaikan nilai minimum penskalaan otomatis untuk konsolidasi node
Secara default, GKE menghapus node yang kurang dimanfaatkan dan menjadwalkan ulang paket
workload ke node lain yang tersedia. Anda dapat menyesuaikan ambang batas lebih lanjut
serta waktu saat node menjadi kandidat untuk dihapus dengan menggunakan
Kolom autoscalingPolicy
di definisi class komputasi, seperti di bawah ini
contoh:
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 akan membuat node menjadi kandidat untuk dihapus jika kurang dimanfaatkan oleh 70% kapasitas CPU dan memori yang tersedia selama lebih dari lima menit. Untuk daftar parameter yang tersedia, lihat Menetapkan parameter penskalaan otomatis untuk konsolidasi node.
Men-deploy class komputasi dalam cluster
Setelah Anda menentukan class komputasi, deploy class tersebut ke cluster:
kubectl apply -f compute-class.yaml
Class komputasi ini siap digunakan di cluster. Anda dapat meminta komputasi dalam spesifikasi Pod atau, jika perlu, menetapkannya sebagai class komputasi default dalam namespace tertentu.
Menetapkan class komputasi default untuk namespace
Saat Anda menetapkan class komputasi default untuk namespace, GKE menggunakan untuk membuat node bagi setiap Pod yang Anda deploy namespace. Jika Pod secara eksplisit meminta class komputasi lain, level Pod akan mengganti default namespace.
Untuk menetapkan class komputasi sebagai default untuk namespace tertentu, lakukan langkah berikut:
Buat namespace
kubectl create namespace cost-optimized-ns
Beri label namespace dengan class compute:
kubectl label namespaces cost-optimized-ns \ cloud.google.com/default-compute-class=cost-optimized
Meminta class komputasi dalam workload
Untuk meminta class komputasi dalam beban kerja, tambahkan pemilih node untuk komputasi tersebut di 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 otomatis menambahkan toleransi untuk Pod yang sesuai dengan taint node untuk Compute Engine. Tolerasi ini memastikan bahwa hanya Pod yang meminta komputasi yang berjalan pada node class komputasi.