Mengonfigurasi load balancing manual

Halaman ini menjelaskan persyaratan load balancing saat menggunakan load balancing manual. Tidak seperti load balancing paket di mana GDCV untuk Bare Metal men-deploy load balancer ke node cluster untuk traffic bidang kontrol dan bidang data, dengan load balancing manual, Anda mengonfigurasi solusi load balancing Anda 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 juga 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 klaster membutuhkan VIP untuk bidang kontrol. Semua cluster pengguna memerlukan VIP kedua untuk layanan ingress.

VIP ini dapat berada di subnet IPv4 apa 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 bidang kontrol VIP. Port mendengarkan default bidang kontrol adalah 443. Namun, jika Anda menentukan port yang berbeda, kolom loadBalancer.ports.controlPlaneLBPort pada file konfigurasi cluster akan menggunakan port tersebut untuk layanan virtual.
  • Grup backend yang berisi semua alamat IP node bidang kontrol cluster. Port backend yang dipantau 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 untuk menganggap node responsif.

Jika load balancer eksternal tidak dikonfigurasi dengan benar, bootstrap cluster kemungkinan akan gagal. Pemeriksaan preflight memverifikasi bahwa load balancer eksternal dikonfigurasi dengan benar, termasuk memverifikasi bahwa load balancer melakukan pemeriksaan kondisi pada endpoint /readyz.

Mereset koneksi ke node yang gagal (Direkomendasikan)

Selain persyaratan sebelumnya, sebaiknya Anda mengonfigurasi 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 aktif, yang dapat menyebabkan ketidakstabilan pada bidang kontrol Kubernetes.

  • Dengan F5 BIG-IP, setelan ini disebut Action On Service Down di halaman konfigurasi kumpulan backend.
  • Dengan HAProxy, setelan ini disebut sesi penonaktifan yang ditandai di konfigurasi server backend.
  • Jika menggunakan load balancer lain, Anda harus membaca dokumentasi untuk menemukan setelan yang setara.

Konfigurasi cluster Anda

Sebelum membuat GKE pada cluster Bare Metal, buat 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 konfigurasikan di load balancer.
  3. Hapus atau jadikan bagian loadBalancer.addressPools sebagai komentar.

Setelah Anda selesai mengedit file konfigurasi, termasuk kolom yang tidak terkait dengan load balancing, pastikan bahwa 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, GDCV untuk Bare Metal tidak secara otomatis menyediakan load balancer, sehingga layanan LoadBalancer tidak berfungsi, kecuali jika Anda menyediakan dan mengonfigurasi load balancer untuk mengarahkan layanan.

Selain itu, GDCV untuk Bare Metal secara 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 agar mengarah ke layanan.

Opsi Anda untuk mendukung layanan LoadBalancer meliputi:

  • Konfigurasikan load balancer secara manual untuk setiap layanan LoadBalancer di cluster. Lihat Mengonfigurasi dukungan untuk layanan LoadBalancer untuk mengetahui contoh penggunaan F5 BIG-IP.
  • Instal pengontrol load balancer di cluster yang mengonfigurasi load balancer eksternal saat layanan LoadBalancer dibuat.
  • Instal 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 yang berbeda, baca dokumentasi untuk load balancer tersebut dan gunakan 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 dan membuatnya.

Membuat partisi untuk cluster Anda

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

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

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

Membuat monitor

Buat monitor untuk melakukan health check pada node bidang kontrol:

  1. Buka Local Traffic > Monitors.
  2. Klik Create.
  3. Masukkan nama untuk monitor (misalnya, https_siapz).
  4. Tetapkan Jenis 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 Selesai.

Membuat node

Buat 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 Traffic Lokal > Node > Daftar Node.
  2. Klik Create.
  3. Masukkan nama untuk node.
  4. Masukkan alamat IP node di kolom Address.
  5. Klik Selesai.

Membuat kumpulan backend

Buat kumpulan untuk node bidang kontrol:

  1. Buka Traffic > Kumpulan > Daftar Kumpulan.
  2. Klik Create.
  3. Pilih Lanjutan di drop-down Konfigurasi.
  4. Masukkan nama untuk kumpulan tersebut.
  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 Tambahkan.

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 Jenis ke Standar.
  5. Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber apa pun.
  6. Masukkan VIP bidang kontrol sebagai Alamat Tujuan.
  7. Masukkan port bidang kontrol sebagai Port Layanan. Secara default, nilai ini adalah 443, tetapi dapat dikonfigurasi dan harus sesuai dengan yang Anda konfigurasikan di konfigurasi cluster untuk loadBalancer.ports.controlPlaneLBPort.
  8. Di kolom Penafsiran Alamat Sumber, pilih Peta Otomatis.
  9. Di Kumpulan Default, pilih kumpulan yang dibuat sebelumnya di drop-down.
  10. Klik Selesai.

Mengonfigurasi dukungan untuk layanan LoadBalancer

Dalam mode load balancing manual, GDCV untuk Bare Metal tidak secara 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 perlu mengetahui VIP yang ingin diekspos melalui load balancer, port tempat Anda ingin mengeksposnya, dan NodePort yang digunakan oleh layanan LoadBalancer di Kubernetes.

Setelah Anda men-deploy layanan LoadBalancer di cluster Anda, 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 menyertakan bagian ports. Setiap entri port menunjukkan nodePort yang diekspos untuk port di layanan, dan nodePort ini adalah tempat yang Anda konfigurasikan untuk ditunjuk backend load balancer. 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 salah satu atau kedua port ini melalui load balancer.

Jika Anda mengekspos layanan ingress yang di-deploy secara otomatis 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 masuk dikonfigurasi dengan loadBalancerIP yang merupakan IP yang disediakan di kolom loadBalancer.vips.ingressVIP pada konfigurasi cluster awal. Anda harus mengekspos VIP ini untuk mengekspos layanan ingress pada load balancer eksternal.

Membuat kumpulan backend

  1. Buka Traffic Lokal > Kumpulan > Daftar Kumpulan.
  2. Klik Create.
  3. Masukkan nama untuk kumpulan tersebut.
  4. Pilih tcp sebagai monitor kondisi.
  5. Menambahkan worker node ke kumpulan node. Ulangi langkah-langkah ini untuk setiap node. Anda dapat menambahkan bidang kontrol dan node pekerja karena NodePort Kubernetes dapat diakses di node mana pun dalam cluster.
    1. Di bagian New Members, klik Node List, lalu pilih salah satu node yang dibuat sebelumnya.
    2. Di kolom Port Layanan, masukkan nilai NodePort untuk layanan.
    3. Klik Tambahkan.

Membuat server virtual

  1. Buka Local Traffic > Virtual Servers > Virtual Server List.
  2. Klik Create.
  3. Masukkan nama untuk server virtual.
  4. Tetapkan Jenis ke Standar.
  5. Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber apa pun.
  6. Masukkan VIP layanan load balancer sebagai Alamat Tujuan.
  7. Masukkan port yang diekspos untuk layanan load balancer sebagai Port Layanan.
  8. Di kolom Penafsiran Alamat Sumber, pilih Peta Otomatis.
  9. Di Kumpulan Default, pilih kumpulan yang dibuat sebelumnya di drop-down.
  10. Klik Selesai.