Mengonfigurasi load balancing manual

Halaman ini menjelaskan persyaratan load balancing saat menggunakan load balancing manual. Tidak seperti load balancing gabungan tempat Google Distributed Cloud men-deploy load balancer ke node cluster untuk traffic bidang kontrol dan bidang data, dengan load balancing manual, Anda mengonfigurasi solusi load balancing sendiri untuk traffic bidang kontrol dan bidang data.

Anda harus menyiapkan load balancer eksternal untuk bidang kontrol sebelum membuat cluster bare metal. Load balancer bidang kontrol eksternal juga dapat digunakan untuk traffic bidang data, atau Anda dapat menyiapkan load balancer terpisah untuk bidang data. Misalnya, Anda dapat menggunakan load balancer dalam cluster seperti MetalLB untuk traffic bidang data.

Selain menjelaskan persyaratan load balancing, halaman ini menjelaskan cara mengonfigurasi load balancing manual menggunakan F5 BIG-IP.

Prasyarat

Bagian berikut menjelaskan prasyarat untuk mengonfigurasi load balancing manual.

Alamat IP yang diperlukan

Anda harus merencanakan VIP sebelum membuat cluster. Semua cluster memerlukan VIP untuk bidang kontrol. Semua cluster pengguna memerlukan VIP kedua untuk layanan ingress.

VIP ini dapat berada di subnet IPv4 mana pun yang dapat dirutekan dari load balancer. VIP bidang kontrol harus dapat dijangkau dari semua node cluster dan dari workstation admin tempat Anda menjalankan bmctl.

Saat Anda membuat cluster, layanan ingress akan di-deploy menggunakan VIP yang Anda tentukan dalam file konfigurasi cluster. Anda dapat mengonfigurasi load balancing untuk alamat IP ini setelah pembuatan cluster.

Anda harus mengetahui alamat IP yang akan digunakan untuk node yang akan digunakan sebagai node bidang kontrol.

Persyaratan load balancer bidang kontrol eksternal

Load balancer bidang kontrol harus dikonfigurasi sebelum membuat cluster. Load balancer bidang kontrol harus memenuhi persyaratan berikut:

  • Layanan virtual (frontend) untuk VIP bidang kontrol. Port dengar default bidang kontrol adalah 443. Namun, jika Anda menentukan port yang berbeda, kolom loadBalancer.ports.controlPlaneLBPort dari file konfigurasi cluster akan menggunakan port tersebut untuk layanan virtual.
  • Grup backend yang berisi semua alamat IP node bidang kontrol cluster. Port backend yang didengarkan bidang kontrol adalah 6444.
  • Health check yang memantau node backend. Health check harus menggunakan HTTPS dan memeriksa endpoint /readyz di port 6444. Health check harus memverifikasi bahwa endpoint ini menampilkan kode status 200 agar node dianggap responsif.

Jika load balancer eksternal tidak dikonfigurasi dengan benar, bootstrapping cluster kemungkinan akan gagal. Pemeriksaan preflight check memverifikasi bahwa load balancer eksternal dikonfigurasi dengan benar, termasuk memverifikasi bahwa load balancer melakukan health checking pada endpoint /readyz.

Mereset koneksi ke node yang gagal (Direkomendasikan)

Selain persyaratan sebelumnya, sebaiknya konfigurasikan load balancer untuk mereset koneksi klien saat mendeteksi kegagalan node backend. Tanpa konfigurasi ini, klien server Kubernetes API dapat berhenti merespons selama beberapa menit saat instance server tidak berfungsi, yang dapat menyebabkan ketidakstabilan di bidang kontrol Kubernetes.

  • Dengan F5 BIG-IP, setelan ini disebut Action On Service Down di halaman konfigurasi kumpulan backend.
  • Dengan HAProxy, setelan ini disebut on-marked-down shutdown-sessions dalam konfigurasi server backend.
  • Jika Anda menggunakan load balancer lain, Anda harus membaca dokumentasinya untuk menemukan setelan yang setara.

Konfigurasi cluster Anda

Sebelum membuat cluster Google Distributed Cloud, Anda membuat file konfigurasi cluster dengan bmctl. Edit file ini untuk mengaktifkan load balancing manual di cluster:

  1. Tetapkan kolom loadBalancer.mode ke manual.
  2. Tetapkan kolom loadBalancer.vips.controlPlaneVIP ke VIP yang Anda konfigurasi di load balancer.
  3. Hapus, atau beri komentar, bagian loadBalancer.addressPools.

Setelah selesai mengedit file konfigurasi, termasuk kolom yang tidak terkait dengan load balancing, pastikan VIP bidang kontrol dikonfigurasi dengan benar di load balancer dengan menjalankan pemeriksaan preflight:

bmctl check preflight -c CLUSTER_NAME

Ganti CLUSTER_NAME dengan nama cluster.

Mendukung Layanan LoadBalancer di cluster pengguna

Anda harus mengonfigurasi load balancing untuk mendukung layanan LoadBalancer Kubernetes Dalam mode load balancing manual, Google Distributed Cloud tidak otomatis menyediakan load balancer sehingga layanan LoadBalancer tidak berfungsi kecuali jika Anda menyediakan dan mengonfigurasi load balancer untuk mengarahkan layanan.

Selain itu, Google Distributed Cloud otomatis men-deploy layanan ingress di semua cluster pengguna menggunakan layanan LoadBalancer. Agar dapat diakses secara eksternal, layanan LoadBalancer ini memerlukan load balancer yang dikonfigurasi untuk mengarah ke layanan.

Opsi Anda untuk mendukung layanan LoadBalancer mencakup:

  • Mengonfigurasi load balancer secara manual untuk setiap layanan LoadBalancer di cluster. Lihat Mengonfigurasi dukungan untuk layanan LoadBalancer untuk contoh menggunakan F5 BIG-IP.
  • Menginstal pengontrol load balancer di cluster yang mengonfigurasi load balancer eksternal saat layanan LoadBalancer dibuat.
  • Menginstal solusi load balancing dalam cluster seperti MetalLB.

Load balancing manual dengan F5 BIG-IP

Bagian ini menjelaskan cara mengonfigurasi load balancing manual dengan F5 BIG-IP sebagai load balancer eksternal. Jika Anda menggunakan load balancer lain, lihat dokumentasi untuk load balancer tersebut dan gunakan langkah-langkah ini sebagai model.

Mengonfigurasi load balancer bidang kontrol

Anda harus mengonfigurasi load balancer bidang kontrol sebelum membuat cluster. Setelah melakukan langkah-langkah ini, Anda dapat mengonfigurasi cluster Anda dan membuatnya.

Membuat partisi untuk cluster Anda

Setiap cluster harus memiliki partisinya sendiri partition. Gunakan utilitas Konfigurasi BIG-IP untuk membuat partisi:

  1. Buka System > Users > Partition List.
  2. Klik Create.
  3. Masukkan nama untuk partisi.
  4. Klik Finished.

Pada langkah-langkah berikut, Anda akan membuat objek di partisi ini. Pastikan partisi ini dipilih di menu drop-down di sudut kanan atas UI untuk setiap tugas berikut sehingga setiap objek dibuat di partisi ini.

Membuat monitor

Buat a monitor untuk melakukan health check pada node bidang kontrol:

  1. Buka Local Traffic > Monitors.
  2. Klik Create.
  3. Masukkan nama untuk monitor (misalnya, https_readyz).
  4. Tetapkan Type ke HTTPS.
  5. Untuk Send String, masukkan GET /readyz HTTP/1.1\r\nHost: \r\nConnection: close.
  6. Untuk Receive String, masukkan HTTP/1.1 200.
  7. Klik Finished.

Membuat node

Buat a node yang mengarah ke node bidang kontrol. Jika cluster Anda memiliki bidang kontrol ketersediaan tinggi (HA) dengan beberapa node bidang kontrol, buat objek node untuk setiap node bidang kontrol.

  1. Buka Local Traffic > Nodes > Node List.
  2. Klik Create.
  3. Masukkan nama untuk node.
  4. Masukkan alamat IP node di kolom Address.
  5. Klik Finished.

Membuat kumpulan backend

Buat kumpulan untuk node bidang kontrol:

  1. Buka Traffic > Pools > Pool List.
  2. Klik Create.
  3. Pilih Advanced di drop-down Configuration.
  4. Masukkan nama untuk kumpulan.
  5. Pilih monitor kesehatan yang dibuat sebelumnya.
  6. Tetapkan Action On Service Down ke Reject (lihat pembahasan setelan ini di bagian Mereset koneksi ke node yang gagal).
  7. Tambahkan node bidang kontrol ke kumpulan. Jika cluster Anda memiliki beberapa node bidang kontrol, ulangi langkah-langkah ini untuk setiap node:
    1. Di bagian New Members , klik Node List , lalu pilih node bidang kontrol yang dibuat sebelumnya.
    2. Di kolom Service Port, masukkan 6444.
    3. Klik Add.

Membuat server virtual

Buat server virtual untuk bidang kontrol:

  1. Buka Local Traffic > Virtual Servers > Virtual Server List.
  2. Klik Create.
  3. Masukkan nama untuk server virtual.
  4. Tetapkan Type ke Standard.
  5. Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber mana pun.
  6. Masukkan VIP bidang kontrol sebagai Destination Address.
  7. Masukkan port bidang kontrol sebagai Service Port. Secara default, port ini adalah 443, tetapi dapat dikonfigurasi dan harus cocok dengan yang Anda konfigurasi dalam konfigurasi cluster untuk loadBalancer.ports.controlPlaneLBPort.
  8. Di kolom Source Address Translation, pilih Auto Map.
  9. Di Default Pool, pilih kumpulan yang dibuat sebelumnya di drop-down.
  10. Klik Finished.

Mengonfigurasi dukungan untuk layanan LoadBalancer

Dalam mode load balancing manual, Google Distributed Cloud tidak otomatis menyediakan load balancer untuk mendukung Layanan LoadBalancer. Lihat Mendukung Layanan LoadBalancer di cluster pengguna untuk mengetahui informasi selengkapnya.

Bagian ini menunjukkan cara mengonfigurasi load balancer F5 BIG-IP secara manual untuk layanan LoadBalancer. Ulangi langkah-langkah ini untuk setiap layanan LoadBalancer yang ingin Anda ekspos.

Prasyarat

Untuk mengonfigurasi layanan LoadBalancer, Anda harus mengetahui VIP yang ingin Anda ekspos melalui load balancer, port yang ingin Anda ekspos, dan NodePort yang digunakan oleh layanan LoadBalancer di Kubernetes.

Setelah men-deploy layanan LoadBalancer di cluster, tentukan NodePort yang digunakan untuk layanan LoadBalancer. Perintah berikut akan menampilkan port layanan:

kubectl --kubeconfig KUBECONFIG get service SERVICE_NAME -oyaml

Ganti kode berikut:

  • KUBECONFIG dengan jalur file kubeconfig yang akan digunakan.
  • SERVICE_NAME dengan nama layanan LoadBalancer.

Output kubctl get service mencakup bagian ports. Setiap entri port menampilkan nodePort yang diekspos untuk port pada layanan, dan nodePort ini adalah yang Anda konfigurasi backend load balancer untuk mengarah ke. Contoh output berikut menunjukkan struktur bagian ports:

spec:
  clusterIP: 172.26.232.107
  externalTrafficPolicy: Cluster
  loadBalancerIP: 21.0.101.77
  ports:
  - name: status-port
    nodePort: 30281
    port: 15021
    protocol: TCP
    targetPort: 15021
  - name: http
    nodePort: 30124
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 31858
    port: 443
    protocol: TCP
    targetPort: 443

Ada port untuk traffic HTTP dan HTTPS. Anda dapat mengekspos satu atau kedua port ini melalui load balancer.

Jika Anda mengekspos layanan ingress yang otomatis di-deploy di semua cluster, layanan LoadBalancer akan diberi nama istio-ingress dan berada di namespace gke-system. Temukan port-nya dengan perintah ini:

kubectl --kubeconfig KUBECONFIG -n gke-system get service istio-ingress -oyaml

Layanan ingress dikonfigurasi dengan loadBalancerIP yang merupakan IP yang diberikan di kolom loadBalancer.vips.ingressVIP dalam konfigurasi cluster awal. Anda harus mengekspos VIP ini untuk mengekspos layanan ingress di load balancer eksternal.

Membuat kumpulan backend

  1. Buka Local Traffic > Pools > Pool List.
  2. Klik Create.
  3. Masukkan nama untuk kumpulan.
  4. Pilih tcp sebagai monitor kesehatan.
  5. Tambahkan node pekerja ke node pool. Ulangi langkah-langkah ini untuk setiap node. Anda dapat menambahkan bidang kontrol dan node pekerja karena NodePort Kubernetes dapat diakses di node mana pun di cluster.
    1. Di bagian New Members , klik Node List , lalu pilih salah satu node yang dibuat sebelumnya.
    2. Di kolom Service Port, masukkan nilai NodePort untuk layanan.
    3. Klik Add.

Membuat server virtual

  1. Buka Local Traffic > Virtual Servers > Virtual Server List.
  2. Klik Create.
  3. Masukkan nama untuk server virtual.
  4. Tetapkan Type ke Standard.
  5. Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber mana pun.
  6. Masukkan VIP layanan load balancer sebagai Destination Address.
  7. Masukkan port yang diekspos untuk layanan load balancer sebagai Service Port.
  8. Di kolom Source Address Translation, pilih Auto Map.
  9. Di Default Pool, pilih kumpulan yang dibuat sebelumnya di drop-down.
  10. Klik Finished.