Node pool adalah grup node dalam cluster yang memiliki konfigurasi yang sama. Semua node dalam cluster Anda harus termasuk dalam node pool. Ada tiga jenis kumpulan node di cluster Google Distributed Cloud: kumpulan node bidang kontrol, load balancer, dan pekerja.
Halaman ini menjelaskan cara memeriksa status node pool pekerja, dan cara menambahkan, memperbarui, dan menghapus node pool pekerja.
Memilih alat untuk mengelola node pool
Cara Anda mengelola node pool bergantung pada jenis cluster dan untuk cluster pengguna, apakah cluster dikelola oleh GKE On-Prem API. Cluster pengguna dikelola oleh GKE On-Prem API jika salah satu hal berikut berlaku:
Cluster dibuat di konsol Google Cloud atau menggunakan Google Cloud CLI (gcloud CLI), yang secara otomatis mengonfigurasi GKE On-Prem API untuk mengelola cluster.
Cluster dibuat menggunakan
bmctl
, tetapi dikonfigurasi untuk dikelola oleh GKE On-Prem API.
Jika GKE On-Prem API mengelola cluster pengguna, Anda dapat menggunakan konsol atau gcloud CLI untuk mengelola node pool. Jika
cluster pengguna tidak dikelola oleh GKE On-Prem API, gunakan kubectl
di workstation admin
untuk mengelola node pool. Anda juga menggunakan kubectl
untuk mengelola kumpulan node untuk semua jenis cluster yang dapat berisi kumpulan node pekerja (cluster campuran, mandiri, dan pengguna).
Jika Anda berencana menggunakan gcloud CLI, lakukan hal berikut di komputer yang telah menginstal gcloud CLI:
Login dengan Akun Google Anda
gcloud auth login
Perbarui komponen:
gcloud components update
Memeriksa status node
Sebelum menambahkan atau menghapus node pool, periksa status node dan node pool-nya masing-masing.
kubectl
Dengan kubectl
, Anda bisa mendapatkan status node di namespace tertentu atau di seluruh cluster. Contoh berikut menunjukkan status kumpulan node
di namespace cluster cluster-abm-cluster
:
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
Sistem akan menampilkan hasil yang mirip dengan berikut ini:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
abm-cluster 3 0 0 0 0
default-pool 2 0 0 0 0
backup-pool 3 0 0 0 0
Setiap kolom dalam tabel menunjukkan status yang berbeda yang dapat dimiliki node. Setiap baris dalam tabel adalah jumlah node per node pool dalam setiap status node.
Saat Anda menambahkan node, awalnya node tersebut memiliki status Reconciling
saat node
disediakan. Setelah node menjadi bagian dari cluster, status node
akan berubah menjadi Ready
.
Anda juga dapat memeriksa status node di cluster dengan menjalankan perintah berikut:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Konsol
Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.
Pilih project Google Cloud tempat cluster pengguna berada.
Di daftar cluster, klik nama cluster, lalu klik Detail selengkapnya di panel Detail.
Klik tab Nodes.
Daftar kumpulan node akan ditampilkan.
gcloud CLI
Cantumkan node pool di cluster:
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ganti kode berikut:
USER_CLUSTER_NAME
: Nama cluster pengguna yang berisi node pool.FLEET_HOST_PROJECT_ID
: ID project tempat cluster dibuat.LOCATION
: Lokasi Google Cloud yang terkait dengan cluster pengguna.
Jelaskan node pool:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ganti
NODE_POOL_NAME
dengan nama node pool.
Jika Anda memerlukan informasi selengkapnya tentang cara mendiagnosis cluster, lihat Membuat snapshot untuk mendiagnosis cluster.
Menambahkan node pool baru
kubectl
Perhatikan aturan berikut saat menambahkan node pool ke cluster:
Cluster admin dapat berisi node pool load balancer dan node pool bidang kontrol, tetapi tidak dapat berisi node pool pekerja: mencoba menambahkan node pool pekerja ke cluster admin akan menghasilkan error.
Cluster hanya dapat berisi satu kumpulan node bidang kontrol, dan satu kumpulan node load balancer. Anda tidak dapat menambahkan node pool bidang kontrol atau load balancing tambahan ke cluster.
Anda menambahkan node pool baru ke cluster dengan membuat resource nodepools.baremetal.cluster.gke.io
baru di cluster. Dalam contoh
berikut, node pool baru bernama "machine-learning-pool" ditambahkan ke manifes. Node pool
baru terdiri dari dua node dengan alamat IP 10.200.0.7
dan 10.200.0.8
:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: machine-learning-pool
namespace: cluster-abm-cluster
spec:
clusterName: abm-cluster
nodes:
- address: 10.200.0.7
- address: 10.200.0.8
taints:
- key: TAINT_KEY
value: TAINT_VALUE
effect: NoSchedule
labels:
key1: LABEL_1
key2: LABEL_2
Simpan konfigurasi dalam file bernama machine-learning-pool.yaml
dan terapkan konfigurasi ke cluster dengan perintah berikut:
kubectl apply -f machine-learning-pool.yaml
Fakta berikut harus dipertimbangkan saat menambahkan node pool ke cluster:
Konfigurasi
NodePool.spec.taints
danNodePool.spec.labels
direkonsiliasi ke node. Semua taint dan label yang ditambahkan langsung ke node akan dihapus. Bidang kontrol tidak menghapus taint dan label yang Anda tambahkan secara langsung selama proses sinkronisasi. Untuk melewati langkah rekonsiliasi ini, Anda dapat menganotasi node denganbaremetal.cluster.gke.io/label-taint-no-sync
.Resource node pool harus dibuat dalam namespace yang sama dengan cluster terkait dan resource node pool harus merujuk ke nama cluster di kolom
spec.clusterName
.
Konsol
Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.
Pilih project Google Cloud tempat cluster pengguna berada.
Di daftar cluster, klik nama cluster, lalu klik Detail selengkapnya di panel Detail.
Klik
Add Node Pool.Masukkan nama untuk kumpulan node.
Di kolom Nodes address 1, masukkan alamat IP mesin node pekerja.
Jika Anda memiliki lebih dari satu mesin node pekerja yang akan ditambahkan, klik
Tambahkan Alamat.Secara opsional, tambahkan label Kubernetes dan/atau taint Kubernetes.
Klik Create.
Status node pool ditampilkan di tab Node. Anda mungkin harus memuat ulang halaman untuk melihat status yang diperbarui.
gcloud CLI
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_POOL_CONFIG
Ganti kode berikut:
NODE_POOL_NAME
: Nama pilihan Anda untuk node pool. Nama harus:- berisi maksimal 40 karakter
- hanya berisi karakter alfanumerik huruf kecil atau tanda hubung (
-
) - diawali dengan karakter abjad
- diakhiri dengan karakter alfanumerik
USER_CLUSTER_NAME
: Nama cluster pengguna.FLEET_HOST_PROJECT_ID
: ID project tempat cluster dibuat.LOCATION
: Lokasi Google Cloud yang Anda tentukan saat membuat cluster.NODE_POOL_CONFIG
: Jalur file konfigurasi yang mendeskripsikan node pool. Contoh:nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
Secara opsional, Anda dapat menentukan hal berikut:
--node-labels=KEY=VALUE,...
: Daftar label Kubernetes (pasangan nilai kunci) yang dipisahkan koma yang diterapkan ke setiap node dalam kumpulan.--node-taints=KEY=VALUE:EFFECT,...
Daftar taint Kubernetes yang dipisahkan koma
diterapkan ke setiap node dalam kumpulan. Taint adalah pasangan nilai kunci yang terkait dengan
efek. Taint digunakan dengan toleransi untuk penjadwalan Pod. Tentukan salah satu
dari berikut ini untuk EFFECT
: NoSchedule
,
PreferNoSchedule
, NoExecute
.
--validate-only
Tentukan tanda ini jika Anda ingin memvalidasi update, tetapi tidak membuat perubahan apa pun.
Memperbarui node pool
kubectl
Anda mengupdate kumpulan node dengan mengubah resource nodepools.baremetal.cluster.gke.io
di cluster. Anda dapat
memperbarui resource secara langsung menggunakan kubectl edit
, atau Anda dapat memperbarui
file YAML dan menggunakan kubectl apply
.
Konsol
Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.
Pilih project Google Cloud tempat cluster pengguna berada.
Di daftar cluster, klik nama cluster, lalu klik Detail selengkapnya di panel Detail.
Klik tab Nodes.
Dalam daftar, klik node pool yang ingin diperbarui.
Di halaman Detail node pool, klik
Edit.Ubah setelan sesuai kebutuhan, lalu klik Simpan.
gcloud CLI
Secara opsional, cantumkan node pool di cluster untuk mendapatkan nama node pool yang ingin Anda perbarui.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ganti kode berikut:
USER_CLUSTER_NAME
: Nama cluster pengguna yang berisi node pool.FLEET_HOST_PROJECT_ID
: ID project tempat cluster dibuat.LOCATION
: Lokasi Google Cloud yang terkait dengan cluster pengguna.
Jalankan perintah berikut:
gcloud container bare-metal node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_CONFIG_FILE
Ganti kode berikut:
NODE_POOL_NAME
dengan nama node pool.NODE_CONFIG_FILE
: Jalur file konfigurasi yang mendeskripsikan node pool. Contoh:
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
Secara opsional, Anda dapat menentukan hal berikut:
--node-labels=KEY=VALUE,...
: Daftar label Kubernetes (pasangan nilai kunci) yang dipisahkan koma yang diterapkan ke setiap node dalam kumpulan.--node-taints=KEY=VALUE:EFFECT,...
Daftar taint Kubernetes yang dipisahkan koma. diterapkan ke setiap node dalam kumpulan. Taint adalah pasangan nilai kunci yang terkait dengan efek. Taint digunakan dengan toleransi untuk penjadwalan Pod. Tentukan salah satu dari berikut ini untuk EFFECT:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
Tentukan tanda ini jika Anda ingin memvalidasi update, tetapi tidak membuat perubahan apa pun.
Contoh:
gcloud container bare-metal node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --node-configs-from-file=node-pool-config.yaml \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Menghapus kumpulan node
kubectl
Anda menghapus node pool dengan kubectl delete
. Misalnya, untuk menghapus node
pool yang ditambahkan di bagian sebelumnya, machine-learning-pool
, gunakan
perintah berikut:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Perhatikan bahwa kumpulan node bidang kontrol dan kumpulan node load balancer sangat penting untuk fungsi cluster dan akibatnya tidak dapat dihapus dari cluster.
Konsol
Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.
Pilih project Google Cloud tempat cluster pengguna berada.
Di daftar cluster, klik nama cluster, lalu klik Detail selengkapnya di panel Detail.
Klik tab Nodes, lalu klik node pool yang ingin Anda hapus.
Klik
Delete.Pada dialog konfirmasi, masukkan nama node pool dan klik Konfirmasi.
gcloud CLI
gcloud container bare-metal node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ganti kode berikut:
NODE_POOL_NAME
dengan nama node pool.USER_CLUSTER_NAME
: Nama cluster pengguna yang berisi node pool.FLEET_HOST_PROJECT_ID
: ID project tempat cluster dibuat.LOCATION
: Lokasi Google Cloud yang terkait dengan cluster pengguna.
Menghapus node pool pekerja di cluster dapat menyebabkan Gangguan Pod. Jika ada PodDisruptionBudget (PDB), Anda mungkin diblokir agar tidak menghapus node pool. Untuk informasi selengkapnya tentang kebijakan gangguan pod, lihat Menghapus node yang diblokir oleh Anggaran Gangguan Pod.
Langkah selanjutnya
Jika persyaratan workload berubah setelah membuat node pool, Anda dapat memperbarui node pool pekerja untuk menambahkan atau menghapus node. Untuk menambahkan atau menghapus node dari node pool pekerja, lihat Menambahkan atau menghapus node dalam cluster.