Halaman ini menjelaskan persyaratan load balancing saat menggunakan load balancing manual. Tidak seperti load balancing paket saat Google Distributed Cloud men-deploy load balancer ke node cluster untuk traffic panel kontrol dan data plane, dengan load balancing manual, Anda mengonfigurasi solusi load-balancing Anda sendiri untuk traffic panel kontrol dan data plane.
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 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 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 pemrosesan 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 diproses bidang kontrol adalah 6444.
- Health check yang memantau node backend. Health check harus menggunakan
HTTPS dan memeriksa endpoint
/readyz
di port 6444. Pemeriksaan kondisi harus memverifikasi bahwa endpoint ini menampilkan kode status 200 untuk menganggap node responsif.
Jika load balancer eksternal tidak dikonfigurasi dengan benar, bootstraping
cluster kemungkinan akan gagal. Pemeriksaan preflight memverifikasi bahwa load balancer eksternal dikonfigurasi dengan benar, termasuk memverifikasi bahwa load balancer melakukan health check 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 mengalami error, yang dapat menyebabkan instabilitas 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 sesi shutdown on-marked-down dalam konfigurasi server backend.
- Jika menggunakan load balancer yang berbeda, Anda harus membaca dokumentasi untuk menemukan setelan yang setara.
Konfigurasi cluster Anda
Sebelum membuat cluster Google Distributed Cloud, Anda harus membuat file konfigurasi
cluster dengan bmctl
. Edit file ini untuk mengaktifkan load balancing manual
di cluster:
- Tetapkan kolom
loadBalancer.mode
kemanual
. - Tetapkan kolom
loadBalancer.vips.controlPlaneVIP
ke VIP yang Anda konfigurasikan di load balancer. - Hapus, atau jadikan bagian
loadBalancer.addressPools
sebagai komentar.
Setelah Anda 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 pra-penerbangan:
bmctl check preflight -c CLUSTER_NAME
Ganti CLUSTER_NAME
dengan nama cluster.
Mendukung Service 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 traffic masuk 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:
- Konfigurasikan load balancer secara manual untuk setiap layanan LoadBalancer dalam 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, 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 dan membuatnya.
Membuat partisi untuk cluster
Setiap cluster harus memiliki partisi-nya sendiri. Gunakan utilitas Konfigurasi BIG-IP untuk membuat partisi:
- Buka System > Users > Partition List.
- Klik Create.
- Masukkan nama untuk partisi.
- Klik Selesai.
Pada langkah-langkah berikut, Anda akan membuat objek di partisi ini. Pastikan partisi ini dipilih di menu drop-down di pojok kanan atas UI untuk setiap tugas berikut sehingga setiap objek dibuat di partisi ini.
Membuat monitor
Buat monitor untuk melakukan health check pada node control plane:
- Buka Traffic Lokal > Monitor.
- Klik Create.
- Masukkan nama untuk monitor (misalnya, https_readyz).
- Tetapkan Type ke HTTPS.
- Untuk Send String, masukkan
GET /readyz HTTP/1.1\r\nHost: \r\nConnection: close
. - Untuk Receive String, masukkan
HTTP/1.1 200
. - 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.
- Buka Traffic Lokal > Node > Daftar Node.
- Klik Create.
- Masukkan nama untuk node.
- Masukkan alamat IP node di kolom Alamat.
- Klik Selesai.
Membuat kumpulan backend
Buat kumpulan untuk node bidang kontrol:
- Buka Traffic Lokal > Kumpulan > Daftar Kumpulan.
- Klik Create.
- Pilih Advanced di drop-down Configuration.
- Masukkan nama untuk kumpulan.
- Pilih health monitor yang dibuat sebelumnya.
- Tetapkan Action On Service Down ke Reject (lihat diskusi setelan ini di bagian Mereset koneksi ke node yang gagal).
- Tambahkan node bidang kontrol ke kumpulan. Jika cluster Anda memiliki beberapa node
platform kontrol, ulangi langkah-langkah ini untuk setiap node:
- Di bagian New Members, klik Node List, lalu pilih node bidang kontrol yang dibuat sebelumnya.
- Di kolom Service Port, masukkan 6444.
- Klik Tambahkan.
Membuat server virtual
Buat server virtual untuk bidang kontrol:
- Buka Traffic Lokal > Server Virtual > Daftar Server Virtual.
- Klik Create.
- Masukkan nama untuk server virtual.
- Tetapkan Type ke Standard.
- Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber mana pun.
- Masukkan VIP bidang kontrol sebagai Destination Address.
- Masukkan port bidang kontrol sebagai Port Layanan. Secara default, port ini adalah 443,
tetapi dapat dikonfigurasi dan harus cocok dengan yang Anda konfigurasikan dalam konfigurasi
cluster untuk
loadBalancer.ports.controlPlaneLBPort
. - Di kolom Source Address Translation, pilih Auto Map.
- Di Default Pool, pilih pool yang dibuat sebelumnya di menu drop-down.
- Klik Selesai.
Mengonfigurasi dukungan untuk layanan LoadBalancer
Dalam mode load balancing manual, Google Distributed Cloud tidak menyediakan load balancer secara otomatis 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 ditampilkan melalui load balancer, port yang ingin Anda tampilkan, dan NodePort yang digunakan 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 ditampilkan untuk port di layanan, dan nodePort ini adalah tujuan yang Anda konfigurasikan untuk 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 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 disediakan
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
- Buka Traffic Lokal > Kumpulan > Daftar Kumpulan.
- Klik Create.
- Masukkan nama untuk kumpulan.
- Pilih tcp sebagai pemantauan kondisi.
- 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 dalam cluster.
- Di bagian New Members, klik Node List, lalu pilih salah satu node yang dibuat sebelumnya.
- Di kolom Service Port, masukkan nilai NodePort untuk layanan.
- Klik Tambahkan.
Membuat server virtual
- Buka Traffic Lokal > Server Virtual > Daftar Server Virtual.
- Klik Create.
- Masukkan nama untuk server virtual.
- Tetapkan Type ke Standard.
- Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber mana pun.
- Masukkan VIP layanan load balancer sebagai Destination Address.
- Masukkan port yang diekspos untuk layanan load balancer sebagai Port Layanan.
- Di kolom Source Address Translation, pilih Auto Map.
- Di Default Pool, pilih pool yang dibuat sebelumnya di menu drop-down.
- Klik Selesai.