Membuat dan mengelola kumpulan node

Saat membuat cluster pengguna, Anda harus mengonfigurasi minimal satu kumpulan node, yang merupakan kumpulan {i>node<i} yang semuanya memiliki konfigurasi yang sama. Setelah cluster dibuat, Anda dapat menambahkan kumpulan node baru, memperbarui setelan kumpulan node, dan menghapus kumpulan node.

Memilih alat untuk mengelola kumpulan node

Cara Anda membuat, memperbarui, dan menghapus kumpulan node bergantung pada apakah cluster dan dikelola oleh GKE On-Prem API. Cluster pengguna dikelola oleh GKE On-Prem API jika salah satu kondisi berikut terpenuhi:

  • 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 tersebut dibuat menggunakan gkectl, tetapi dikonfigurasi untuk dikelola oleh GKE On-Prem API.

Jika GKE On-Prem API mengelola cluster pengguna, Anda dapat menggunakan atau gcloud CLI untuk mengelola node pool. Jika cluster pengguna tidak dikelola oleh GKE On-Prem API, gunakan gkectl di admin untuk mengelola kumpulan node.

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 node pool

Jika cluster dikelola oleh GKE On-Prem API, Anda dapat menggunakan konsol atau gcloud CLI untuk menambahkan node pool; namun, Anda harus menggunakan gkectl di workstation admin untuk mengonfigurasi hal berikut setelan node pool:

Sebelum menambahkan node pool, memverifikasi bahwa tersedia cukup alamat IP pada cluster.

Gkectl

Lakukan hal berikut di workstation admin Anda:

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

    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 {i>default <i}yang 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 {i>kubeconfig<i} untuk cluster admin Anda.

    • USER_CLUSTER_CONFIG dengan jalur cluster pengguna Anda file konfigurasi Anda.

Contoh konfigurasi

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

  • pool-1: hanya atribut minimum wajib yang ditentukan
  • pool-2: menyertakan vsphere.datastore dan vsphere.tags
  • pool-3: menyertakan 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 Ringkasan cluster Google Kubernetes Engine kami.

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Dalam daftar cluster, klik nama cluster, lalu klik Lihat detail di panel Detail.

  4. Klik Add node pool.

  5. Konfigurasi kumpulan node:

    1. Masukkan Nama kumpulan node.
    2. Masukkan jumlah vCPUs untuk setiap node dalam kumpulan (minimum 4 per pekerja cluster pengguna).
    3. Masukkan ukuran memory dalam mebibyte (MiB) untuk setiap node dalam kumpulan (minimal 8.192 MiB per node pekerja 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 gibibyte (GiB) (defaultnya adalah 40 GiB).

  6. Di bagian Metadata kumpulan node (opsional), jika Anda ingin menambahkan Kubernetes label dan taint, lakukan hal berikut:

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

  8. Konsol Google Cloud menampilkan Status cluster: perubahan di progresnya. Klik Show Details untuk melihat Resource status kondisi dan Pesan status.

gcloud CLI

Jalankan perintah berikut untuk membuat node pool:

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 node kolam renang. 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 di yang akan dibuat oleh kumpulan node.

  • FLEET_HOST_PROJECT_ID: ID project yang cluster terdaftar.

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

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

    • BOOT_DISK_SIZE: Ukuran boot disk di gibibyte (GiB) untuk setiap node dalam kumpulan. Jumlah minimumnya adalah 40 GiB.

    • vCPUs: Jumlah vCPU untuk setiap node dalam kumpulan node. Jumlah minimumnya adalah 4.

    • MEMORY: Ukuran memori dalam mebibyte (MiB) untuk setiap nama dari node dalam kumpulan. Jumlah minimumnya adalah 8192 MiB per node pekerja cluster pengguna dan nilainya harus kelipatan 4.

    • NODES: Jumlah node di node pool. Tujuan 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 memungkinkan speaker MetalLB berjalan pada node di dalam kumpulan. Setidaknya satu kumpulan node harus diaktifkan untuk load balancer MetalLB.

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

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

    • --node-taints=KEY=VALUE:EFFECT,... Daftar yang dipisahkan koma dari taint Kubernetes yang diterapkan ke setiap node di kolam renang. Taint adalah pasangan nilai kunci yang terkait dengan suatu efek. Taint digunakan dengan toleransi untuk penjadwalan Pod. Tentukan salah satu 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 informasi tentang penanda opsional lainnya, baca referensi gcloud.

Memperbarui node pool

Saat Anda meningkatkan jumlah replika, Google Distributed Cloud akan menambahkan jumlah node yang diperlukan ke cluster pengguna, dan saat Anda mengurangi jumlah replika, node akan dihapus. Mengubah jumlah replika untuk kumpulan node tidak mengganggu beban kerja. Pastikan Anda memiliki alamat IP yang tersedia jika menambah jumlah replika.

Jika Anda memperbarui kolom kumpulan node lainnya, tindakan ini akan memicu update berkelanjutan pada cluster. Dalam update berkelanjutan, Google Distributed Cloud akan membuat node baru dan kemudian menghapus {i> node<i} lama. Proses ini diulang sampai semua {i>node<i} lama telah diganti dengan node baru. Proses ini tidak menyebabkan waktu henti, tetapi cluster harus memiliki alamat IP tambahan yang dapat digunakan selama update.

Misalkan kumpulan node akan memiliki N node di akhir update. Maka Anda harus memiliki setidaknya N + 1 alamat IP yang tersedia untuk {i>node<i} di kumpulan tersebut. Artinya jika Anda mengubah ukuran cluster dengan menambahkan node ke satu atau beberapa kumpulan, harus memiliki setidaknya satu alamat IP lebih banyak daripada jumlah total {i>node<i} yang akan berada di semua kumpulan node cluster di akhir pengubahan ukuran. Untuk informasi selengkapnya, lihat Pastikan alamat IP yang tersedia cukup.

Untuk memperbarui kumpulan node pada cluster pengguna:

Gkectl

  1. Ubah nilai bidang yang ingin diubah pada nodePools pada 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 {i>kubeconfig<i} untuk cluster admin Anda.

    • USER_CLUSTER_CONFIG dengan jalur cluster pengguna Anda file konfigurasi Anda.

Mengupdate osImageType yang digunakan oleh kumpulan node

Untuk memperbarui kumpulan node agar dapat menggunakan osImageType yang berbeda, Anda harus menggunakan command line. Untuk mengubah osImageType yang digunakan oleh kumpulan node, perbarui untuk kumpulan node, seperti yang ditunjukkan pada contoh berikut, dan 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 lainnya, gunakan gcloud CLI atau gkectl.

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

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Dalam daftar cluster, klik nama cluster, lalu klik Lihat detail di panel Detail.

  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 menampilkan Status cluster: perubahan di progresnya. Klik Show Details untuk melihat Resource status kondisi dan Pesan status.

gcloud CLI

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

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

    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 untuk memperbarui.

    • 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 tanda untuk diperbarui atribut kumpulan node. Misalnya, untuk mengubah jumlah vCPU dan di kumpulan node, 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 informasi tentang atribut kumpulan node yang dapat Anda perbarui, baca referensi gcloud.

Memverifikasi perubahan Anda

Untuk memastikan bahwa kumpulan node Anda telah dibuat atau diperbarui sebagaimana mestinya, periksa node cluster:

Gkectl

Jalankan perintah berikut:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide

Jika Anda perlu mengembalikan perubahan Anda, edit file konfigurasi cluster dan jalankan gkectl update cluster.

Konsol

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

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Dalam daftar cluster, klik nama cluster, lalu klik Lihat detail di panel Detail.

  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 harus memiliki minimal 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 beban kerja yang berjalan pada node yang terpengaruh.

  2. Hapus definisinya dari nodePools pada 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 {i>kubeconfig<i} untuk cluster admin Anda.

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

Konsol

  1. Pastikan tidak ada beban kerja yang berjalan pada node yang terpengaruh.

  2. Di konsol, buka Ringkasan cluster Google Kubernetes Engine kami.

    Buka cluster GKE

  3. Pilih project Google Cloud tempat cluster pengguna berada.

  4. Dalam daftar cluster, klik nama cluster, lalu klik Lihat detail di panel Detail.

  5. Klik tab Nodes.

  6. Klik nama kumpulan node yang ingin dihapus.

  7. Klik Delete.

  8. Klik untuk kembali ke halaman sebelumnya.

  9. Konsol Google Cloud menampilkan Status cluster: perubahan di progresnya. Klik Show Details untuk melihat Resource status kondisi dan Pesan status.

gcloud CLI

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

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

    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 untuk hapus.

    • 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 akan memberikan informasi spesifik saat gagal. Jika perintah berhasil dan Anda tidak melihat {i>node<i}, Anda dapat untuk memecahkan masalah dengan Mendiagnosis masalah cluster kami.

  • Mungkin saja resource cluster tidak memadai, seperti kurangnya alamat IP yang tersedia selama pembuatan atau pembaruan kumpulan node. Lihat Mengubah ukuran topik cluster pengguna untuk mengetahui detail tentang cara memverifikasi ketersediaan alamat IP.

  • Anda juga dapat meninjau Panduan pemecahan masalah.

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

    Perlu waktu beberapa saat untuk membuat atau memperbarui kumpulan node di cluster pengguna. Namun, jika waktu tunggu sangat lama dan Anda mencurigai adanya sesuatu mungkin gagal, Anda dapat menjalankan perintah berikut:

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