Membuat dan mengelola kumpulan node

Saat membuat cluster pengguna, Anda harus mengonfigurasi setidaknya satu kumpulan node, yang merupakan sekelompok node yang semuanya memiliki konfigurasi yang sama. Setelah cluster dibuat, Anda dapat menambahkan node pool baru, memperbarui setelan node pool, dan menghapus node pool.

Pilih alat untuk mengelola kumpulan node

Cara Anda membuat, mengupdate, dan menghapus node pool bergantung pada 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 dibuat di Google Cloud Console atau menggunakan Google Cloud CLI (gcloud CLI), yang otomatis mengonfigurasi GKE On-Prem API untuk mengelola cluster.

  • Cluster dibuat menggunakan gkectl, 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 gkectl di workstation admin untuk mengelola node pool.

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

  1. Login dengan Akun Google Anda

    gcloud auth login
    
  2. Perbarui komponen:

    gcloud components update
    

Menambahkan kumpulan node

Jika cluster dikelola oleh GKE On-Prem API, Anda dapat menggunakan konsol atau gcloud CLI untuk menambahkan kumpulan node. Namun, Anda perlu menggunakan gkectl di workstation admin untuk mengonfigurasi setelan kumpulan node berikut:

Sebelum Anda menambahkan kumpulan node lain, pastikan tersedia cukup alamat IP di cluster.

Gkectl

Lakukan hal berikut di komputer admin Anda:

  1. Dalam file konfigurasi cluster pengguna, isi bagian nodePools.

    Anda harus menentukan kolom berikut:

    • nodePools.[i].name
    • nodePools[i].cpus
    • nodePools.[i].memoryMB
    • nodePools.[i].replicas

    Kolom berikut bersifat opsional. Jika Anda tidak menyertakan nodePools[i].bootDiskSizeGB atau nodePools[i].osImageType, nilai default akan digunakan.

    • nodePools[i].labels
    • nodePools[i].taints
    • nodePools[i].bootDiskSizeGB
    • nodePools[i].osImageType
    • nodePools[i].vsphere.datastore
    • nodePools[i].vsphere.tags
  2. Jalankan perintah berikut:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig untuk cluster admin Anda.

    • USER_CLUSTER_CONFIG dengan jalur file konfigurasi cluster pengguna Anda.

Contoh konfigurasi

Dalam contoh konfigurasi berikut, ada empat kumpulan node, masing-masing dengan atribut yang berbeda:

  • pool-1: hanya atribut minimum yang diperlukan yang ditentukan
  • pool-2: mencakup vsphere.datastore dan vsphere.tags
  • pool-3: mencakup taints dan labels
  • pool-4: mencakup osImageType dan bootDiskSizeGB
nodePools:
- name: pool-1
  cpus: 4
  memoryMB: 8192
  replicas: 5
- name: pool-2
  cpus: 8
  memoryMB: 16384
  replicas: 3
  vsphere:
    datastore: my_datastore
    tags:
    - category: "purpose"
      name: "testing"
- name: pool-3
  cpus: 4
  memoryMB: 8192
  replicas: 5
  taints:
    - key: "example-key"
      effect: NoSchedule
  labels:
    environment: production
    app: nginx
- name: pool-4
  cpus: 4
  memoryMB: 8192
  replicas: 5
  osImageType: cos
  bootDiskSizeGB: 40

Konsol

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

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Di daftar cluster, klik nama cluster, lalu klik View details di panel Details.

  4. Klik Add node pool.

  5. Konfigurasikan kumpulan node:

    1. Masukkan Nama kumpulan node.
    2. Masukkan jumlah vCPUs untuk setiap node dalam kumpulan (minimal 4 per pekerja cluster pengguna).
    3. Masukkan ukuran memori dalam mebibyte (MiB) untuk setiap node dalam kumpulan (minimum 8.192 MiB per node worker cluster pengguna dan harus kelipatan 4).
    4. Di kolom Nodes, masukkan jumlah node dalam kumpulan (minimal 3).
    5. Pilih OS image type: Ubuntu Containerd atau COS.

    6. Masukkan Ukuran boot disk dalam gigabyte (GiB) (default-nya adalah 40 GiB).

  6. Di bagian Node pool metadata (opsional), jika Anda ingin menambahkan label dan taint Kubernetes, lakukan hal berikut:

    1. Klik + Add Kubernetes Labels. Masukkan Key dan Value untuk label. Ulangi jika perlu.
    2. Klik + Add Taint. Masukkan Key, Value, dan Effect untuk taint. Ulangi jika perlu.
  7. Klik Create.

  8. Konsol Google Cloud akan menampilkan Cluster status: changes in progress. Klik Show Details untuk melihat Resource status condition dan Status messages.

gcloud CLI

Jalankan perintah berikut untuk membuat kumpulan node:

gcloud container vmware node-pools create NODE_POOL_NAME \
  --cluster=USER_CLUSTER_NAME  \
  --project=FLEET_HOST_PROJECT_ID \
  --location=LOCATION \
  --image-type=IMAGE_TYPE  \
  --boot-disk-size=BOOT_DISK_SIZE \
  --cpus=vCPUS \
  --memory=MEMORY \
  --replicas=NODES

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 tempat kumpulan node akan dibuat.

  • FLEET_HOST_PROJECT_ID: ID project tempat cluster didaftarkan.

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

    • IMAGE_TYPE: Jenis OS image yang akan dijalankan pada VM di kumpulan node. Tetapkan ke salah satu pilihan berikut: ubuntu_containerd atau cos.

    • BOOT_DISK_SIZE: Ukuran boot disk dalam gigabyte (GiB) untuk setiap node dalam kumpulan. Minimum adalah 40 GiB.

    • vCPUs: Jumlah vCPU untuk setiap node di kumpulan node. Minimumnya adalah 4.

    • MEMORY: Ukuran memori dalam mebibyte (MiB) untuk setiap node di kumpulan. Nilai minimumnya adalah 8.192 MiB per node pekerja cluster pengguna dan nilainya harus kelipatan 4.

    • NODES: Jumlah node di node pool. Jumlah minimumnya adalah 3.

    Contoh:

    gcloud container vmware node-pools create default-pool \
      --cluster=user-cluster-1  \
      --location=us-west1 \
      --image-type=ubuntu_containerd  \
      --boot-disk-size=40 \
      --cpus=8 \
      --memory=8192 \
      --replicas=5
    

    Secara opsional, Anda dapat menentukan hal berikut:

    • --enable-load-balancer: Hanya relevan untuk load balancer MetalLB. Jika ditentukan, memungkinkan speaker MetalLB berjalan pada node dalam kumpulan. Setidaknya satu kumpulan node harus diaktifkan untuk load balancer MetalLB.

    • --image=IMAGE: Nama image OS di vCenter.

    • --node-labels=KEY=VALUE,...: Daftar label Kubernetes (key-value pair) yang dipisahkan koma yang diterapkan ke setiap node dalam kumpulan.

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

    Contoh:

    gcloud container vmware node-pools create default-pool \
        --cluster=user-cluster-1  \
        --location=us-west1 \
        --image-type=ubuntu_containerd  \
        --boot-disk-size=40 \
        --cpus=8 \
        --memory=8192 \
        --replicas=5 \
        --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
    

    Untuk mengetahui informasi tentang flag opsional lainnya, baca referensi gcloud.

Memperbarui node pool

Saat Anda meningkatkan jumlah replika, GKE di VMware menambahkan jumlah node yang diperlukan ke cluster pengguna, dan jika Anda mengurangi jumlah replika, node akan dihapus. Mengubah jumlah replika untuk kumpulan node tidak akan mengganggu workload. Pastikan Anda memiliki alamat IP yang tersedia jika meningkatkan jumlah replika.

Jika Anda mengupdate kolom node pool lainnya, tindakan ini akan memicu update berkelanjutan pada cluster. Dalam update berkelanjutan, GKE di VMware membuat node baru, lalu menghapus node lama. Proses ini diulang hingga semua node lama telah diganti dengan node baru. Proses ini tidak menyebabkan periode nonaktif, tetapi cluster harus memiliki alamat IP tambahan yang tersedia untuk digunakan selama update.

Misalkan kumpulan node akan memiliki N node pada akhir update. Maka, Anda harus memiliki minimal N + 1 alamat IP yang tersedia untuk node dalam kumpulan tersebut. Artinya, jika Anda mengubah ukuran cluster dengan menambahkan node ke satu atau beberapa kumpulan, Anda harus memiliki setidaknya satu alamat IP lebih banyak dari jumlah total node yang akan ada di semua kumpulan node cluster pada akhir pengubahan ukuran. Untuk informasi selengkapnya, lihat Memastikan alamat IP yang tersedia cukup.

Untuk memperbarui kumpulan node pada cluster pengguna:

Gkectl

  1. Ubah nilai untuk kolom yang ingin Anda ubah di bagian nodePools file konfigurasi cluster pengguna.

  2. Update cluster:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig untuk cluster admin Anda.

    • USER_CLUSTER_CONFIG dengan jalur file konfigurasi cluster pengguna Anda.

Mengupdate osImageType yang digunakan oleh kumpulan node

Untuk memperbarui kumpulan node agar menggunakan osImageType yang berbeda, Anda harus menggunakan command line. Untuk mengubah osImageType yang digunakan oleh kumpulan node, perbarui file konfigurasi untuk kumpulan node, seperti yang ditunjukkan pada contoh berikut, lalu jalankan gkectl update cluster.

nodePools:
- name: np-1
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: ubuntu_containerd

Konsol

Anda hanya dapat memperbarui kolom berikut menggunakan konsol:

  • Jumlah replika
  • Memori
  • Jumlah vCPU

Untuk memperbarui kolom lain, gunakan gcloud CLI atau gkectl.

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

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Di daftar cluster, klik nama cluster, lalu klik View details di panel Details.

  4. Klik tab Nodes.

  5. Klik nama node pool yang ingin diubah.

  6. Klik Edit di samping kolom yang ingin diubah, lalu klik Done.

  7. Klik untuk kembali ke halaman sebelumnya.

  8. Konsol Google Cloud akan menampilkan Cluster status: changes in progress. Klik Show Details untuk melihat Resource status condition dan Status messages.

gcloud CLI

  1. Atau, cantumkan kumpulan node untuk mendapatkan nama kumpulan node yang ingin Anda update:

    gcloud container vmware node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    
  2. Jalankan perintah berikut untuk mengupdate kumpulan node:

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION \
      --ATTRIBUTE_TO_UPDATE \
      ...
    

    Ganti kode berikut:

    • NODE_POOL_NAME: Nama kumpulan node yang akan diperbarui.

    • USER_CLUSTER_NAME: Nama cluster pengguna yang berisi kumpulan node.

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

    • ATTRIBUTE_TO_UPDATE: Satu atau beberapa flag untuk memperbarui atribut kumpulan node. Misalnya, untuk mengubah jumlah vCPU dan node dalam kumpulan, jalankan perintah berikut.

    gcloud container vmware node-pools update default-pool \
        --cluster=user-cluster-1  \
        --project=example-project-12345
        --location=us-west1 \
        --cpus=10 \
        --replicas=6
    

    Untuk mengetahui informasi tentang atribut kumpulan node yang dapat diperbarui, baca referensi gcloud.

Memverifikasi perubahan Anda

Untuk memastikan bahwa node pool telah dibuat atau diupdate sebagaimana mestinya, periksa node cluster:

Gkectl

Jalankan perintah berikut:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide

Jika Anda perlu mengembalikan perubahan, edit file konfigurasi cluster dan jalankan gkectl update 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. Di daftar cluster, klik nama cluster, lalu klik View details di panel Details.

  4. Klik tab Nodes.

  5. Klik nama kumpulan node yang ingin Anda lihat.

gcloud CLI

Jalankan perintah berikut:

gcloud container vmware node-pools describe NODE_POOL_NAME \
  --cluster=USER_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --location=LOCATION

Menghapus node pool

Meskipun Anda dapat menghapus kumpulan node, cluster pengguna Anda harus memiliki setidaknya satu kumpulan node. Menghapus kumpulan node akan langsung menghapus node kumpulan, terlepas dari apakah node tersebut menjalankan beban kerja atau tidak.

Untuk menghapus kumpulan node dari cluster pengguna:

Gkectl

  1. Pastikan tidak ada workload yang berjalan di node yang terpengaruh.

  2. Hapus definisinya dari bagian nodePools file konfigurasi cluster pengguna.

  3. Update cluster:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Ganti kode berikut:

    • [ADMIN_CLUSTER_KUBECONFIG] dengan jalur file kubeconfig untuk cluster admin Anda.

    • [USER_CLUSTER_CONFIG] dengan jalur file konfigurasi cluster pengguna Anda.

Konsol

  1. Pastikan tidak ada workload yang berjalan di node yang terpengaruh.

  2. Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.

    Buka cluster GKE

  3. Pilih project Google Cloud tempat cluster pengguna berada.

  4. Di daftar cluster, klik nama cluster, lalu klik View details di panel Details.

  5. Klik tab Nodes.

  6. Klik nama kumpulan node yang ingin Anda hapus.

  7. Klik Delete.

  8. Klik untuk kembali ke halaman sebelumnya.

  9. Konsol Google Cloud akan menampilkan Cluster status: changes in progress. Klik Show Details untuk melihat Resource status condition dan Status messages.

gcloud CLI

  1. Secara opsional, cantumkan kumpulan node untuk mendapatkan nama kumpulan node yang ingin Anda hapus:

    gcloud container vmware node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    
  2. Jalankan perintah berikut untuk menghapus kumpulan node:

    gcloud container vmware node-pools delete NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    Ganti kode berikut:

    • NODE_POOL_NAME: Nama kumpulan node yang akan dihapus.

    • USER_CLUSTER_NAME: Nama cluster pengguna yang berisi kumpulan node.

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

Pemecahan masalah

  • Secara umum, perintah gkectl update cluster memberikan hal-hal spesifik saat gagal. Jika perintah berhasil dan Anda tidak melihat node, Anda dapat memecahkan masalahnya dengan panduan Mendiagnosis masalah cluster.

  • Ada kemungkinan resource cluster tidak mencukupi, seperti kurangnya alamat IP yang tersedia selama pembuatan atau update kumpulan node. Lihat topik Mengubah ukuran cluster pengguna untuk mengetahui detail tentang cara memverifikasi bahwa alamat IP tersedia.

  • Anda juga dapat meninjau panduan Pemecahan masalah umum.

  • Tidak akan melanjutkan setelah Creating node MachineDeployment(s) in user cluster….

    Pembuatan atau update node pool pada cluster pengguna memerlukan waktu beberapa saat. Namun, jika waktu tunggu sangat lama dan Anda mencurigai adanya sesuatu yang gagal, Anda dapat menjalankan perintah berikut:

    1. Jalankan kubectl get nodes untuk mendapatkan status node Anda.
    2. Untuk setiap node yang belum siap, jalankan kubectl describe node NODE_NAME untuk mendapatkan detailnya.