Mengonfigurasi load balancing manual

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

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

Selain menjelaskan persyaratan load balancing, halaman ini menjelaskan cara untuk mengonfigurasi load balancing manual menggunakan F5 IP BESAR.

Prasyarat

Bagian berikut menjelaskan prasyarat untuk mengonfigurasi pemuatan manual balancing.

Alamat IP yang diperlukan

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

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

Saat Anda membuat cluster, layanan masuk akan diterapkan menggunakan VIP tentukan di file konfigurasi cluster. Anda dapat mengonfigurasi load balancing untuk IP ini setelah pembuatan cluster.

Anda harus mengetahui alamat IP yang akan Anda gunakan untuk {i>node<i} 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. Bidang kontrol porta pemrosesan default adalah 443. Namun, jika Anda menentukan port Kolom loadBalancer.ports.controlPlaneLBPort file konfigurasi cluster yang digunakan porta itu untuk layanan virtual.
  • Grup backend yang berisi semua alamat IP kontrol cluster node bidang. Port backend yang didengarkan bidang kontrol adalah 6444.
  • Health check yang memantau node backend. Health check harus menggunakan HTTPS dan periksa endpoint /readyz di port 6444. Health check harus verifikasi bahwa endpoint ini menampilkan kode status 200 untuk mempertimbangkan node sehat.

Jika load balancer eksternal tidak dikonfigurasi dengan benar, cluster kemungkinan akan gagal. Preflight check memverifikasi bahwa beban eksternal telah dikonfigurasi dengan benar, termasuk memverifikasi bahwa load balancer health check endpoint /readyz.

Reset koneksi ke node yang gagal (Direkomendasikan)

Selain persyaratan sebelumnya, sebaiknya konfigurasi muatan untuk mereset koneksi klien ketika mendeteksi kegagalan node backend. Tanpa konfigurasi ini, klien server Kubernetes API dapat menghentikan merespons selama beberapa menit ketika {i>instance <i} server mati, yang dapat menyebabkan ketidakstabilan di bidang kontrol Kubernetes.

  • Dengan F5 BIG-IP, setelan ini disebut Action On Service Down di backend halaman konfigurasi kumpulan kumpulan data.
  • Dengan HAProxy, setelan ini disebut sesi shutdown on-marked-down di konfigurasi server backend.
  • Jika Anda menggunakan load balancer lain, sebaiknya lihat dokumentasi lain untuk menemukan pengaturan yang setara.

Konfigurasi cluster Anda

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

  1. Tetapkan kolom loadBalancer.mode ke manual.
  2. Tetapkan kolom loadBalancer.vips.controlPlaneVIP ke VIP yang Anda yang dikonfigurasi di load balancer.
  3. Hapus bagian loadBalancer.addressPools atau jadikan 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 LoadBalancer Kubernetes layanan Dalam mode load balancing manual, Google Distributed Cloud tidak otomatis menyediakan load balancer sehingga layanan LoadBalancer tidak berfungsi kecuali jika Anda menyediakan mengonfigurasi load balancer untuk mengarahkan layanan.

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

Opsi Anda untuk mendukung layanan LoadBalancer meliputi:

  • Mengonfigurasi load balancer secara manual untuk setiap layanan LoadBalancer di . Lihat Mengonfigurasi dukungan untuk layanan LoadBalancer misalnya menggunakan F5 BIG-IP.
  • Instal pengontrol load balancer di cluster yang mengonfigurasi resource eksternal load balancer 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 lain, hubungi dokumentasi untuk load balancer tersebut dan menggunakan langkah-langkah ini sebagai model.

Mengonfigurasi load balancer bidang kontrol

Anda harus mengonfigurasi load balancer bidang kontrol sebelum membuat cluster. Sesudah dengan menjalankan langkah-langkah ini, Anda dapat mengonfigurasi cluster dan membuatnya.

Membuat partisi untuk cluster Anda

Setiap kelompok harus memiliki partisi. Gunakan utilitas BIG-IP Configuration untuk membuat partisi:

  1. Buka System > Pengguna > Daftar Partisi.
  2. Klik Create.
  3. Masukkan nama untuk partisi.
  4. Klik Selesai.

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

Membuat monitor

Buat pantau untuk melakukan health check pada node bidang kontrol:

  1. Buka Traffic Lokal > Monitor.
  2. Klik Create.
  3. Masukkan nama untuk monitor (misalnya, https_Readyz).
  4. Tetapkan Jenis ke HTTPS.
  5. Untuk Send String, masukkan GET /readyz HTTP/1.1\r\nHost: \r\nConnection: close.
  6. Untuk Terima String, masukkan HTTP/1.1 200.
  7. Klik Selesai.

Membuat node

Buat node yang menunjuk ke {i>node<i} bidang kontrol. Jika cluster Anda memiliki ketersediaan tinggi bidang kontrol (HA) dengan beberapa node bidang kontrol, buat sebuah 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 kolam renang untuk node bidang kontrol:

  1. Buka Lalu Lintas Lokal > Kumpulan > Daftar Kumpulan.
  2. Klik Create.
  3. Pilih Lanjutan di drop-down Konfigurasi.
  4. Masukkan nama untuk kumpulan.
  5. Pilih pemantau kondisi yang dibuat sebelumnya.
  6. Setel Tindakan Saat Layanan Tidak Aktif ke Tolak (lihat diskusi tentang setelan ini di bagian Mereset koneksi ke node yang gagal).
  7. Tambahkan node bidang kontrol ke kumpulan. Jika cluster Anda memiliki beberapa kontrol bidang, ulangi langkah-langkah ini untuk setiap node:
    1. Di bagian New Members, klik Node List, lalu pilih {i>node<i} bidang kontrol yang dibuat sebelumnya.
    2. Di kolom Service Port, masukkan 6444.
    3. Klik Tambahkan.

Membuat server virtual

Buat project virtual server untuk bidang kontrol:

  1. Buka Traffic Lokal > Server Virtual > Daftar Server Virtual.
  2. Klik Create.
  3. Masukkan nama untuk server virtual.
  4. Tetapkan Jenis ke Standar.
  5. Masukkan 0.0.0.0/0 di kolom Alamat Sumber untuk mengizinkan traffic dari sumber.
  6. Masukkan VIP bidang kontrol sebagai Alamat Tujuan.
  7. Masukkan port bidang kontrol sebagai Port Layanan. Secara {i>default<i} adalah 443, tetapi ini dapat dikonfigurasi dan harus sesuai dengan yang Anda konfigurasi di cluster Anda konfigurasi untuk loadBalancer.ports.controlPlaneLBPort.
  8. Di kolom Source Address Translation, pilih Auto Map.
  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, Google Distributed Cloud tidak otomatis menyediakan load balancer untuk mendukung LoadBalancer Google. Lihat Mendukung Layanan LoadBalancer di cluster pengguna untuk mengetahui informasi selengkapnya tidak akurat atau tidak sesuai.

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

Prasyarat

Untuk mengkonfigurasi layanan LoadBalancer, Anda perlu mengetahui VIP yang yang ingin diekspos melalui load balancer, port yang ingin diekspos NodePort yang digunakan 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 porta pada layanan, dan nodePort ini tujuan konfigurasi backend load balancer. Contoh berikut output 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 keduanya port tertentu melalui load balancer.

Jika Anda mengekspos layanan masuk yang otomatis di-deploy di semua cluster, layanan LoadBalancer diberi nama istio-ingress dan berada dalam Namespace gke-system. Temukan portnya dengan perintah ini:

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

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

Membuat kumpulan backend

  1. Buka Traffic Lokal > Kumpulan > Daftar Kumpulan.
  2. Klik Create.
  3. Masukkan nama untuk kumpulan.
  4. Pilih tcp sebagai pemantau kondisi.
  5. Tambahkan 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 Service Port, masukkan nilai NodePort untuk layanan.
    3. Klik Tambahkan.

Membuat server virtual

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