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:
- 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 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:
- 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 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:
- Buka Local Traffic > Monitors.
- Klik Create.
- Masukkan nama untuk monitor (misalnya, https_siapz).
- Tetapkan Jenis 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 Address.
- Klik Selesai.
Membuat kumpulan backend
Buat kumpulan untuk node bidang kontrol:
- Buka Traffic > Kumpulan > Daftar Kumpulan.
- Klik Create.
- Pilih Lanjutan di drop-down Konfigurasi.
- Masukkan nama untuk kumpulan tersebut.
- Pilih monitor kesehatan yang dibuat sebelumnya.
- Tetapkan Action On Service Down ke Reject (lihat pembahasan setelan ini di bagian Mereset koneksi ke node yang gagal).
- Tambahkan node bidang kontrol ke kumpulan. Jika cluster Anda memiliki beberapa node bidang 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 Local Traffic > Virtual Servers > Virtual Server List.
- Klik Create.
- Masukkan nama untuk server virtual.
- Tetapkan Jenis ke Standar.
- Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber apa pun.
- Masukkan VIP bidang kontrol sebagai Alamat Tujuan.
- 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
. - Di kolom Penafsiran Alamat Sumber, pilih Peta Otomatis.
- Di Kumpulan Default, pilih kumpulan yang dibuat sebelumnya di drop-down.
- 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
- Buka Traffic Lokal > Kumpulan > Daftar Kumpulan.
- Klik Create.
- Masukkan nama untuk kumpulan tersebut.
- Pilih tcp sebagai monitor kondisi.
- 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.
- Di bagian New Members, klik Node List, lalu pilih salah satu node yang dibuat sebelumnya.
- Di kolom Port Layanan, masukkan nilai NodePort untuk layanan.
- Klik Tambahkan.
Membuat server virtual
- Buka Local Traffic > Virtual Servers > Virtual Server List.
- Klik Create.
- Masukkan nama untuk server virtual.
- Tetapkan Jenis ke Standar.
- Masukkan 0.0.0.0/0 di kolom Source Address untuk mengizinkan traffic dari sumber apa pun.
- Masukkan VIP layanan load balancer sebagai Alamat Tujuan.
- Masukkan port yang diekspos untuk layanan load balancer sebagai Port Layanan.
- Di kolom Penafsiran Alamat Sumber, pilih Peta Otomatis.
- Di Kumpulan Default, pilih kumpulan yang dibuat sebelumnya di drop-down.
- Klik Selesai.