Mengonfigurasi node pool khusus

Tentang node pool

Node pool adalah grup node 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 hibrida Apigee lainnya tidak.

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

Menggunakan nodeSelectors default

Praktik terbaiknya adalah menyiapkan dua node pool 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 bernama apigee-runtime. Yang perlu Anda lakukan adalah membuat node pool dengan nama ini, dan Apigee hybrid akan menangani detail penjadwalan pod untuk Anda:

Nama node pool default Deskripsi
apigee-data Node pool stateful.
apigee-runtime Node pool stateless.

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

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

Untuk memastikan pod Anda dijadwalkan di node yang benar, buat dua node pool 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, pod yang mendasarinya akan dijadwalkan, terlepas dari apakah node pool ditentukan dengan nama yang diperlukan atau tidak. Artinya, jika Anda lupa membuat node pool atau jika Anda tidak sengaja memberi nama node pool selain apigee-runtime atau apigee-data, penginstalan runtime hybrid akan berhasil. Kubernetes akan menentukan tempat untuk menjalankan pod Anda.

Jika Anda menetapkan requiredForScheduling ke true (default), 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 dapat membuat node pool dengan nama kustom dan menentukan nama tersebut dalam stanza nodeSelector. Misalnya, konfigurasi berikut menetapkan pod Cassandra ke kumpulan yang bernama my-cassandra-pool dan semua pod lainnya ke kumpulan yang 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 node pool untuk komponen tertentu di GKE

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

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

Anda dapat menentukan kumpulan node kustom di salah satu komponen berikut:

  • 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, dan GKE akan otomatis memberi label pada setiap node dengan hal berikut:

cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME

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

Memberi label node secara manual

Apigee hybrid saat ini hanya didukung di Anthos 1.1.1. Versi Anthos ini tidak mendukung fitur node pool; oleh karena itu, Anda harus memberi label pada node pekerja secara manual seperti yang dijelaskan di bawah. Lakukan langkah-langkah berikut setelah cluster hibrida Anda aktif dan berjalan:

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

    Contoh output:

    NAME                   STATUS   ROLES    AGE     VERSION
    apigee-092d639a-4hqt   Ready    <none>   7d      v1.14.6-gke.2
    apigee-092d639a-ffd0   Ready    <none>   7d      v1.14.6-gke.2
    apigee-109b55fc-5tjf   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c2a9203a-8h27   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c70aedae-t366   Ready    <none>   7d      v1.14.6-gke.2
    apigee-d349e89b-hv2b   Ready    <none>   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 node pool untuk komponen tertentu di Anthos GKE

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

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

Anda dapat menentukan kumpulan node kustom di salah satu komponen berikut:

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