Mengelola kumpulan node dalam cluster

Kumpulan node adalah sekelompok node di dalam cluster yang memiliki konfigurasi yang sama. Semua node dalam cluster Anda harus termasuk dalam kumpulan node. Ada tiga jenis kumpulan node dalam cluster Google Distributed Cloud: bidang kontrol, load balancer, dan kumpulan node pekerja.

Halaman ini menjelaskan cara memeriksa status kumpulan node pekerja, serta cara menambahkan, memperbarui, dan menghapus kumpulan node pekerja.

Memilih alat untuk mengelola kumpulan node

Cara Anda mengelola kumpulan node bergantung pada jenis cluster dan cluster pengguna, apakah cluster dikelola oleh GKE On-Prem API atau tidak. Cluster pengguna dikelola oleh GKE On-Prem API jika salah satu kondisi berikut terpenuhi:

  • Cluster ini dibuat di Konsol Google Cloud atau menggunakan Google Cloud CLI (gcloud CLI), yang secara otomatis mengonfigurasi GKE On-Prem API untuk mengelola cluster.

  • Cluster tersebut 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 kumpulan node. Anda juga menggunakan kubectl untuk mengelola kumpulan node untuk semua jenis cluster yang dapat berisi kumpulan node pekerja (cluster hybrid, mandiri, dan pengguna).

Jika Anda berencana menggunakan gcloud CLI, lakukan hal berikut di komputer yang telah menginstal gcloud CLI:

  1. Sign in menggunakan Account Google Anda

    gcloud auth login
    
  2. Perbarui komponen:

    gcloud components update
    

Periksa status node

Sebelum menambahkan atau menghapus kumpulan node, periksa status node dan kumpulan nodenya 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 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 berbagai status yang dimiliki node. Setiap baris dalam tabel adalah jumlah node per kumpulan node di setiap status node.

Saat Anda menambahkan node, awalnya node tersebut akan 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

  1. Di konsol, buka halaman Ringkasan cluster Google Kubernetes Engine.

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Dalam daftar cluster, klik nama cluster, lalu klik More details di panel Details.

  4. Klik tab Nodes.

    Daftar kumpulan node akan ditampilkan.

Daftar node screenshot

gcloud CLI

  1. Buat daftar kumpulan node pada 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 kumpulan node.

    • FLEET_HOST_PROJECT_ID: ID project tempat cluster dibuat.

    • LOCATION: Lokasi Google Cloud yang terkait dengan cluster pengguna.

  2. Menjelaskan kumpulan node:

    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 kumpulan node.

Jika Anda memerlukan informasi lebih lanjut tentang cara mendiagnosis cluster, lihat Membuat snapshot untuk mendiagnosis cluster.

Menambahkan kumpulan node baru

kubectl

Perhatikan aturan berikut saat menambahkan kumpulan node ke cluster:

  • Cluster admin dapat berisi kumpulan node load balancer dan kumpulan node bidang kontrol, tetapi tidak boleh berisi kumpulan node pekerja. Jika mencoba menambahkan kumpulan node pekerja ke cluster admin, error akan muncul.

  • Sebuah cluster hanya dapat berisi satu kumpulan node bidang kontrol, dan satu kumpulan node load balancer. Anda tidak dapat menambahkan bidang kontrol tambahan atau kumpulan node load balancing ke cluster.

Anda menambahkan kumpulan node baru ke cluster dengan membuat resource nodepools.baremetal.cluster.gke.io baru di cluster ini. Pada contoh berikut, kumpulan node baru bernama "machine-learning-pool" ditambahkan ke manifes. Kumpulan node 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 kumpulan node ke cluster:

  • Konfigurasi NodePool.spec.taints dan NodePool.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 langsung selama proses sinkronisasi. Untuk mengabaikan langkah rekonsiliasi ini, Anda dapat menganotasi node dengan baremetal.cluster.gke.io/label-taint-no-sync.

  • Resource kumpulan node harus dibuat dalam namespace yang sama dengan cluster terkait dan resource kumpulan node harus merujuk pada nama cluster di kolom spec.clusterName.

Konsol

  1. Di konsol, buka halaman Ringkasan cluster Google Kubernetes Engine.

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Dalam daftar cluster, klik nama cluster, lalu klik More details di panel Details.

  4. Klik Add Node Pool.

  5. Masukkan nama untuk kumpulan node.

  6. Di kolom Alamat node 1, masukkan alamat IP mesin node pekerja.

    Jika Anda memiliki lebih dari satu mesin node pekerja untuk ditambahkan, klik Add Address.

  7. Secara opsional, tambahkan label Kubernetes dan/atau taint Kubernetes.

  8. Klik Create.

Status kumpulan node 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 kumpulan node. Namanya harus:

    • berisi maksimal 40 karakter
    • hanya berisi karakter alfanumerik huruf kecil atau tanda hubung (-)
    • diawali dengan karakter alfabet
    • 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 kumpulan node. 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 yang dipisahkan koma untuk label Kubernetes (key-value pair) 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 suatu efek. Taint digunakan dengan toleransi untuk penjadwalan Pod. Tentukan salah satu hal berikut untuk EFFECT: NoSchedule, PreferNoSchedule, NoExecute.

  • --validate-only Tentukan flag ini jika Anda ingin memvalidasi update, tetapi tidak melakukan 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

  1. Di konsol, buka halaman Ringkasan cluster Google Kubernetes Engine.

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Dalam daftar cluster, klik nama cluster, lalu klik More details di panel Details.

  4. Klik tab Nodes.

  5. Pada daftar, klik kumpulan node yang ingin Anda perbarui.

  6. Di halaman Detail node pool, klik Edit.

  7. Ubah setelan sesuai kebutuhan, lalu klik Simpan.

gcloud CLI

  1. Secara opsional, cantumkan kumpulan node di cluster untuk mendapatkan nama kumpulan node 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 kumpulan node.

    • FLEET_HOST_PROJECT_ID: ID project tempat cluster dibuat.

    • LOCATION: Lokasi Google Cloud yang terkait dengan cluster pengguna.

  2. 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 kumpulan node.

    • NODE_CONFIG_FILE: Jalur file konfigurasi yang mendeskripsikan kumpulan node. 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 yang dipisahkan koma untuk label Kubernetes (key-value pair) yang diterapkan ke setiap node dalam kumpulan.

  • --node-taints=KEY=VALUE:EFFECT,... Daftar taint Kubernetes yang dipisahkan koma. yang diterapkan ke setiap node dalam kumpulan. Taint adalah pasangan nilai kunci yang terkait dengan suatu efek. Taint digunakan dengan toleransi untuk penjadwalan Pod. Tentukan salah satu hal berikut untuk EFFECT: NoSchedule, PreferNoSchedule, NoExecute.

  • --validate-only Tentukan flag ini jika Anda ingin memvalidasi update, tetapi tidak melakukan 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 kumpulan node dengan kubectl delete. Misalnya, untuk menghapus kumpulan node yang ditambahkan di bagian sebelumnya, machine-learning-pool, gunakan perintah berikut:

kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster

Perlu diingat bahwa kumpulan node bidang kontrol dan kumpulan node load balancer sangat penting untuk fungsi cluster, dan oleh karena itu tidak dapat dihapus dari cluster.

Konsol

  1. Di konsol, buka halaman Ringkasan cluster Google Kubernetes Engine.

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Dalam daftar cluster, klik nama cluster, lalu klik More details di panel Details.

  4. Klik tab Nodes, lalu klik kumpulan node yang ingin Anda hapus.

  5. Klik Delete.

  6. Pada dialog konfirmasi, masukkan nama kumpulan node, lalu klik Confirm.

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 kumpulan node.

  • USER_CLUSTER_NAME: Nama cluster pengguna yang berisi kumpulan node.

  • FLEET_HOST_PROJECT_ID: ID project tempat cluster dibuat.

  • LOCATION: Lokasi Google Cloud yang terkait dengan cluster pengguna.

Menghapus kumpulan node pekerja dalam cluster dapat menyebabkan Gangguan Pod. Jika ada PodDisruptionBudget (PDB), Anda mungkin tidak dapat menghapus kumpulan node. Untuk mengetahui informasi selengkapnya tentang kebijakan gangguan pod, baca Menghapus node yang diblokir oleh Anggaran Gangguan Pod.

Langkah selanjutnya

Jika persyaratan workload berubah setelah Anda membuat kumpulan node, Anda dapat memperbarui kumpulan node pekerja untuk menambahkan atau menghapus node. Untuk menambahkan atau menghapus node dari kumpulan node pekerja, lihat Menambahkan atau menghapus node dalam cluster.