Halaman ini menunjukkan cara menerapkan kelas komputasi secara default ke Pod Google Kubernetes Engine (GKE) yang tidak secara eksplisit memilih kelas komputasi. Halaman ini berisi petunjuk untuk menetapkan class komputasi sebagai default di namespace dan untuk seluruh cluster. Petunjuk ini ditujukan bagi administrator cluster yang ingin mengurangi beban manual yang disebabkan oleh konfigurasi node dan beban kerja individual.
Sebelum membaca halaman ini, pahami kelas komputasi kustom.
Tentang class komputasi default
Anda dapat mengonfigurasi cluster GKE atau namespace tertentu agar memiliki class komputasi default. Class default yang Anda konfigurasi berlaku untuk Pod apa pun di cluster atau namespace tersebut yang tidak memilih class komputasi lain. Saat Anda men-deploy Pod yang tidak memilih class komputasi, GKE akan menerapkan class komputasi default dalam urutan berikut:
- Jika namespace memiliki class komputasi default, GKE akan mengubah spesifikasi Pod untuk memilih class komputasi tersebut.
- Jika namespace tidak memiliki class komputasi default, class default tingkat cluster akan diterapkan. GKE tidak mengubah spesifikasi Pod.
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
gcloud components update
.
Memiliki cluster GKE Autopilot atau Standard yang menjalankan versi yang mendukung penetapan class komputasi default di tingkat cluster atau namespace. Untuk mengetahui informasi selengkapnya, lihat bagian Persyaratan.
Untuk cluster Standard, aktifkan penyediaan otomatis node atau autoscaler cluster.
Jika Anda ingin menetapkan kelas komputasi kustom sebagai default untuk namespace, deploy kelas komputasi kustom.
Persyaratan
- Untuk menetapkan class komputasi sebagai default tingkat cluster, cluster harus menjalankan GKE versi 1.33.1-gke.1744000 atau yang lebih baru.
- Untuk menetapkan class komputasi sebagai default tingkat namespace hanya untuk Pod non-DaemonSet, cluster harus menjalankan GKE versi 1.33.1-gke.1788000 atau yang lebih baru.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi class komputasi default tingkat cluster atau namespace, minta administrator Anda untuk memberi Anda peran IAM berikut di Google Cloud project:
-
Kubernetes Engine Developer (
roles/container.developer
) -
Perbarui class komputasi default tingkat cluster:
Kubernetes Engine Cluster Admin (
roles/container.clusterAdmin
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengonfigurasi class komputasi default tingkat cluster atau namespace. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengonfigurasi class komputasi default tingkat cluster atau namespace:
-
container.customResourceDefinitions.create
-
container.customResourceDefinitions.update
-
container.customResourceDefinitions.get
-
container.customResourceDefinitions.list
-
container.namespaces.get
-
container.namespaces.list
-
container.pods.get
-
container.nodes.get
-
container.nodes.list
-
container.deployments.create
-
container.deployments.get
-
Tambahkan label ke namespace:
container.namespaces.update
-
Aktifkan class komputasi default tingkat cluster:
container.clusters.update
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Mengonfigurasi class komputasi default untuk namespace
Anda dapat memberi anotasi pada namespace Kubernetes apa pun di cluster dengan nama kelas komputasi yang akan digunakan sebagai default. Jika Pod yang di-deploy ke namespace tersebut belum memilih class komputasi, GKE akan mengubah spesifikasi Pod untuk memilih class default di namespace. Anda dapat menetapkan class komputasi kustom atau bawaan sebagai default.
Untuk menerapkan class komputasi ke semua Pod dalam namespace secara default, tambahkan label
cloud.google.com/default-compute-class
ke namespace tersebut:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class=COMPUTECLASS_NAME
Ganti kode berikut:
NAMESPACE_NAME
: nama namespace yang akan diperbarui.COMPUTECLASS_NAME
: nama class komputasi yang akan ditetapkan sebagai default untuk namespace.
Jika perintah gagal dengan pesan error berikut, namespace sudah memiliki class komputasi default:
error: 'cloud.google.com/default-compute-class' already has a value, and --overwrite is false
Untuk mengatasi error ini, perbarui class komputasi default untuk namespace.
Untuk menerapkan class komputasi ke semua Pod non-DaemonSet di namespace secara default, tambahkan label
cloud.google.com/default-compute-class-non-daemonset
ke namespace tersebut:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-non-daemonset=COMPUTECLASS_NAME
Jika perintah gagal dengan pesan error berikut, namespace sudah memiliki class komputasi default untuk Pod non-DaemonSet:
error: 'cloud.google.com/default-compute-class-non-daemonset' already has a value, and --overwrite is false
Untuk mengatasi error ini, perbarui class komputasi default untuk namespace.
Memperbarui class komputasi default yang ada di namespace
Untuk mengganti class komputasi default yang ada untuk namespace, jalankan salah satu perintah berikut:
Perbarui class komputasi default untuk semua Pod di namespace:
kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class=COMPUTECLASS_NAME \ --overwrite
Ganti kode berikut:
NAMESPACE_NAME
: nama namespace yang akan diperbarui.COMPUTECLASS_NAME
: nama class komputasi yang akan ditetapkan sebagai default baru untuk namespace.
Ganti class komputasi default untuk Pod non-DaemonSet di namespace:
kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-non-daemonset=COMPUTECLASS_NAME \ --overwrite
Mengonfigurasi class komputasi default untuk cluster
Bagian ini menunjukkan cara menetapkan class komputasi sebagai default untuk
cluster Anda. Untuk kelas komputasi default tingkat cluster, jangan tentukan taint node dan label node secara manual untuk node pool yang ada di cluster.
GKE tidak menskalakan node pool yang memiliki taint node untuk class komputasi. Jika Anda menambahkan label secara manual untuk class komputasi default
,
GKE dapat menskalakan node pool tersebut. Namun, konfigurasi manual ini
tidak diperlukan untuk menggunakan class komputasi tingkat cluster default.
Untuk mengaktifkan penetapan class komputasi default tingkat cluster bagi cluster, jalankan perintah
gcloud container clusters update
dengan flag--enable-default-compute-class
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-default-compute-class
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.CONTROL_PLANE_LOCATION
: lokasi bidang kontrol cluster Anda, sepertius-central1
.
Anda juga dapat menentukan flag ini saat membuat cluster Autopilot atau Standard.
Simpan manifes berikut, yang menentukan
ComputeClass
bernamadefault
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: default spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Contoh manifes ini meminta node yang menggunakan instance N4. Jika instance N4 tidak tersedia, permintaan class komputasi akan meminta instance N2. Anda dapat mengonfigurasi class komputasi
default
dengan kolom yang tersedia di ComputeClass CustomResourceDefinition.Terapkan manifes ke cluster Anda:
kubectl apply -f PATH_TO_MANIFEST
Ganti
PATH_TO_MANIFEST
dengan jalur ke manifes untuk kelas komputasi.
Setelah Anda menetapkan class komputasi default tingkat cluster, GKE akan menskalakan node pool yang memenuhi kedua persyaratan berikut:
- Konfigurasi node sama dengan konfigurasi class komputasi
default
. - Kumpulan node tidak memiliki taint atau label untuk class komputasi yang berbeda.
GKE dapat menskalakan node pool yang memiliki taint dan label
untuk class komputasi
default
.
Misalnya, jika class komputasi default
menentukan seri mesin N4, GKE dapat menskalakan node pool yang ada yang menggunakan instance N4 dan tidak memiliki taint atau label untuk class komputasi yang berbeda.
Memverifikasi perilaku class komputasi default
Untuk memeriksa apakah class komputasi default yang Anda tetapkan untuk namespace atau untuk cluster berfungsi seperti yang diharapkan, lakukan hal berikut:
Tinjau contoh Deployment berikut:
Deployment ini tidak meminta class komputasi secara eksplisit.
Membuat Deployment:
kubectl apply --namespace=NAMESPACE_NAME \ -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/refs/heads/main/quickstarts/hello-app/manifests/helloweb-deployment.yaml
Ganti
NAMESPACE_NAME
dengan salah satu dari yang berikut ini, bergantung pada apa yang ingin Anda verifikasi:- Nama namespace yang memiliki class komputasi default.
- Nama namespace yang tidak memiliki class komputasi default.
GKE mungkin memerlukan waktu beberapa saat untuk membuat node baru guna menjalankan Pod.
Identifikasi node yang menjalankan Pod dari contoh Deployment:
kubectl get pods --namespace=NAMESPACE_NAME \ --selector=app=hello -o=wide
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES helloweb-7795fbf856-58n5l 1/1 Running 0 9m21s 10.52.2.3 gke-cluster-1-nap-n2-highcpu-2-3muqi8-f213e529-rx7d <none> <none>
Dapatkan label node:
kubectl get node NODE_NAME --show-labels \ | grep "cloud.google.com/compute-class"
Ganti
NODE_NAME
dengan nama node dari output langkah sebelumnya.Outputnya mirip dengan hal berikut ini:
NODE_NAME Ready <none> 22m v1.32.4-gke.1236007 # lines are omitted from this output cloud.google.com/compute-class=COMPUTECLASS_NAME,cloud.google.com/gke-boot-disk=pd-balanced,cloud.google.com/gke-container-runtime=containerd
Nilai dalam
COMPUTECLASS_NAME
adalah salah satu dari berikut:- Class komputasi default tingkat cluster:
default
untuk node yang dibuat oleh GKE Autopilot atau oleh penyediaan otomatis node. Node di node pool yang ada yang dibuat secara manual mungkin tidak memiliki labelcloud.google.com/compute-class
. - Class komputasi default tingkat namespace: nama class komputasi yang Anda konfigurasi sebagai default namespace.
- Class komputasi default tingkat cluster:
Menonaktifkan class komputasi default
Untuk menonaktifkan class komputasi default di namespace atau cluster, lakukan salah satu hal berikut:
Untuk menonaktifkan class komputasi default tingkat namespace untuk semua Pod, hapus label
cloud.google.com/default-compute-class
dari namespace:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-
Karakter
-
di akhir kunci label menghapus semua label dengan kunci tersebut dari objekNamespace
di Kubernetes API.Untuk menonaktifkan class komputasi default tingkat namespace untuk Pod non-DaemonSet, hapus label
cloud.google.com/default-compute-class-non-daemonset
dari namespace:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-non-daemonset-
Untuk menonaktifkan class komputasi default tingkat cluster, gunakan perintah
gcloud container clusters update
dengan flag--no-enable-default-compute-class
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --no-enable-default-compute-class
Langkah berikutnya
- Pelajari lebih lanjut kelas komputasi kustom di GKE.