Halaman ini menjelaskan persyaratan load balancing saat menggunakan load balancing manual. Tidak seperti load balancing gabungan di mana 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 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 dengar 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 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 agar node dianggap responsif.
Jika load balancer eksternal tidak dikonfigurasi dengan benar, bootstrapping cluster kemungkinan akan gagal. Pemeriksaan pra-penerbangan memverifikasi bahwa load balancer eksternal dikonfigurasi dengan benar, termasuk memverifikasi bahwa load balancer melakukan pemeriksaan kondisi endpoint /readyz
.
Reset 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 pool backend.
- Dengan HAProxy, setelan ini disebut on-marked-down shutdown-sessions dalam konfigurasi server backend.
- Jika Anda menggunakan load balancer yang berbeda, Anda harus melihat dokumentasi 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:
- Tetapkan kolom
loadBalancer.mode
kemanual
. - Tetapkan kolom
loadBalancer.vips.controlPlaneVIP
ke VIP yang Anda konfigurasi 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 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 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 untuk mengarah ke layanan.
Opsi Anda untuk mendukung layanan LoadBalancer meliputi:
- Mengonfigurasi load balancer secara manual untuk setiap layanan LoadBalancer di cluster. Lihat Mengonfigurasi dukungan untuk layanan LoadBalancer untuk 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 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 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 Buat.
- Masukkan nama 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 Local Traffic > Monitors.
- Klik Buat.
- 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 dengan ketersediaan tinggi (HA) dengan beberapa node bidang kontrol, buat objek node untuk setiap node bidang kontrol.
- Buka Local Traffic > Nodes > Node List.
- Klik Buat.
- Masukkan nama untuk node.
- Masukkan alamat IP node di kolom Alamat.
- Klik Selesai.
Membuat kumpulan backend
Buat pool untuk node bidang kontrol:
- Buka Traffic Lokal > Pool > Daftar Pool.
- Klik Buat.
- Pilih Lanjutan di drop-down Konfigurasi.
- Masukkan nama untuk pool.
- Pilih health monitor yang dibuat sebelumnya.
- Setel Tindakan Saat Layanan Tidak Berfungsi ke Tolak (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 Buat.
- Masukkan nama untuk server virtual.
- Tetapkan Type ke Standard.
- Masukkan 0.0.0.0/0 di kolom Alamat Sumber 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 konfigurasi di 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 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 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 di layanan, dan nodePort ini adalah yang Anda konfigurasi untuk dituju oleh 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 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 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
- Buka Traffic Lokal > Pool > Daftar Pool.
- Klik Buat.
- Masukkan nama untuk pool.
- Pilih tcp sebagai pemantau kondisi.
- Tambahkan node pekerja ke node pool. Ulangi langkah-langkah ini untuk setiap node. Anda dapat
menambahkan bidang kontrol dan worker node 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 Local Traffic > Virtual Servers > Virtual Server List.
- Klik Buat.
- Masukkan nama untuk server virtual.
- Tetapkan Type ke Standard.
- Masukkan 0.0.0.0/0 di kolom Alamat Sumber untuk mengizinkan traffic dari sumber mana pun.
- Masukkan VIP layanan load balancer sebagai Alamat Tujuan.
- 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.