Mengonfigurasi kumpulan node khusus

Tentang node pool

Kumpulan node adalah sekelompok node di dalam cluster yang semuanya memiliki konfigurasi yang sama. Biasanya, Anda menentukan kumpulan node terpisah saat memiliki pod dengan persyaratan resource yang berbeda. Misalnya, pod apigee-cassandra memerlukan penyimpanan persisten, sedangkan pod hybrid Apigee lainnya tidak.

Topik ini membahas cara mengonfigurasi node pool khusus untuk penginstalan hybrid.

Menggunakan nodeSelectors default

Praktik terbaiknya adalah menyiapkan dua kumpulan node khusus: satu untuk pod Cassandra dan satu untuk semua pod runtime lainnya. Dengan menggunakan konfigurasi nodeSelector default, penginstal akan menetapkan pod Cassandra ke kumpulan node stateful bernama apigee-data dan semua pod lainnya ke kumpulan node stateless yang bernama apigee-runtime. Anda hanya perlu membuat node pool dengan nama ini, dan Apigee Hybrid akan menangani detail penjadwalan pod untuk Anda:

Nama kumpulan node default Deskripsi
apigee-data Kumpulan node stateful.
apigee-runtime Kumpulan node stateless.

Berikut ini adalah konfigurasi nodeSelector default. Properti apigeeData menentukan kumpulan node untuk pod Cassandra. apigeeRuntime menentukan kumpulan node untuk semua pod lainnya. Anda dapat mengganti setelan default ini di file penggantian, seperti yang akan dijelaskan nanti dalam topik ini:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Sekali lagi, untuk memastikan pod Anda dijadwalkan pada node yang benar, yang harus Anda lakukan adalah membuat dua kumpulan node dengan nama apigee-data dan apigee-runtime.

Properti requiredForScheduling

Bagian konfigurasi nodeSelector memiliki properti yang disebut requiredForScheduling:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"
Jika ditetapkan ke false (default), pod yang mendasarinya akan dijadwalkan terlepas dari apakah kumpulan node ditentukan dengan nama yang diperlukan atau tidak. Artinya, jika Anda lupa membuat node pool, atau jika Anda tidak sengaja menamai kumpulan node selain apigee-runtime atau apigee-data, penginstalan hybrid runtime akan berhasil. Kubernetes akan menentukan tempat menjalankan pod.

Jika Anda menyetel requiredForScheduling ke true, penginstalan akan gagal kecuali jika ada kumpulan node yang cocok dengan kunci dan nilai nodeSelector yang dikonfigurasi.

Menggunakan nama kumpulan node kustom

Jika tidak ingin menggunakan node pool dengan nama default, Anda bisa membuat node pool dengan nama kustom dan menentukan nama tersebut di stanza nodeSelector. Misalnya, konfigurasi berikut menetapkan pod Cassandra ke kumpulan bernama my-cassandra-pool dan semua pod lainnya ke kumpulan bernama my-runtime-pool:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "my-runtime-pool"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "my-cassandra-pool"

Mengganti kumpulan node untuk komponen tertentu di GKE

Anda juga dapat mengganti konfigurasi kumpulan node pada level komponen individual. Misalnya, konfigurasi berikut menetapkan kumpulan node dengan nilai apigee-custom ke komponen runtime:

runtime:
  nodeSelector:
    key: cloud.google.com/gke-nodepool
    value: apigee-custom

Anda dapat menentukan kumpulan node kustom pada salah satu komponen ini:

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger

Konfigurasi node pool GKE

Di GKE, node pool harus memiliki nama unik yang Anda berikan saat membuat kumpulan tersebut, dan GKE secara otomatis melabeli setiap node dengan hal berikut:

cloud.google.com/gke-nodepool=the_node_pool_name

Selama Anda membuat kumpulan node bernama apigee-data dan apigee-runtime, konfigurasi lebih lanjut tidak diperlukan. Jika Anda ingin menggunakan nama node kustom, lihat Menggunakan nama kumpulan node kustom.

Konfigurasi kumpulan node Anthos

Apigee Hybrid saat ini hanya didukung di Anthos 1.1.1. Versi Anthos ini tidak mendukung fitur kumpulan node; sehingga, Anda harus memberi label worker node secara manual seperti yang dijelaskan di bawah. Lakukan langkah-langkah berikut setelah cluster hybrid Anda aktif dan berjalan:

  1. Jalankan perintah berikut untuk mendapatkan daftar worker node di cluster Anda:
    kubectl -n apigee get nodes

    Contoh output:

    NAME                   STATUS   ROLES    AGE     VERSION
    apigee-092d639a-4hqt   Ready       7d      v1.14.6-gke.2
    apigee-092d639a-ffd0   Ready       7d      v1.14.6-gke.2
    apigee-109b55fc-5tjf   Ready       7d      v1.14.6-gke.2
    apigee-c2a9203a-8h27   Ready       7d      v1.14.6-gke.2
    apigee-c70aedae-t366   Ready       7d      v1.14.6-gke.2
    apigee-d349e89b-hv2b   Ready       7d      v1.14.6-gke.2
    
  2. Beri label pada setiap node untuk membedakan antara node runtime dan node data.

    Gunakan perintah ini untuk memberi label pada node:

    kubectl label node node_name key=value

    Contoh:

    $ kubectl label node apigee-092d639a-4hqt apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-092d639a-ffd0 apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-109b55fc-5tjf apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-c2a9203a-8h27 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-c70aedae-t366 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-d349e89b-hv2b apigee.com/apigee-nodepool=apigee-data
    

Mengganti kumpulan node untuk komponen tertentu di Anthos GKE

Anda juga dapat mengganti konfigurasi node pool pada level komponen individual untuk penginstalan Anthos GKE. Misalnya, konfigurasi berikut menetapkan kumpulan node dengan nilai apigee-custom ke komponen runtime:

runtime:
  nodeSelector:
    key: apigee.com/apigee-nodepool
    value: apigee-custom

Anda dapat menentukan kumpulan node kustom pada salah satu komponen ini:

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger