Gambaran umum MetalLB untuk kluster Kubernetes
Berlaku untuk: Azure Local, versi 23H2
Saat menyiapkan kluster AKS Arc, Anda memerlukan cara untuk membuat layanan Anda dapat diakses di luar kluster. Jenis LoadBalancer
ini sangat ideal untuk aksesibilitas ini, tetapi IP eksternal tetap tertunda. Ekstensi untuk MetalLB untuk Kubernetes dengan dukungan Azure Arc adalah alat yang memungkinkan Anda menghasilkan IP eksternal untuk aplikasi dan layanan Anda. Kluster Kubernetes dengan dukungan Arc dapat diintegrasikan dengan MetalLB menggunakan ekstensi untuk MetalLB untuk Kubernetes dengan dukungan Azure Arc.
Untuk membuat layanan Anda dapat diakses di luar kluster, MetalLB memerlukan alamat IP. MetalLB mengurus penetapan dan melepaskan alamat ini sesuai kebutuhan saat Anda membuat layanan, tetapi hanya mendistribusikan IP yang ada di kumpulan yang dikonfigurasi. Ketika MetalLB menetapkan alamat IP eksternal ke layanan, MetalLB menginformasikan jaringan di luar kluster bahwa IP ini termasuk dalam kluster. Komunikasi ini dilakukan menggunakan protokol jaringan standar seperti ARP atau BGP.
- Mode Lapisan 2 (ARP): Dalam mode lapisan 2, satu node K8s dalam kluster mengambil kepemilikan layanan, dan menggunakan protokol penemuan alamat standar (ARP untuk IPv4) untuk membuat IP tersebut dapat dijangkau di jaringan lokal. Dari sudut pandang LAN, mesin yang mengumumkan hanya memiliki beberapa alamat IP.
- BGP: Dalam mode BGP, semua mesin dalam kluster membuat sesi peering BGP dengan router terdekat yang Anda kontrol, dan memberi tahu router tersebut cara meneruskan lalu lintas ke IP layanan. Menggunakan BGP memungkinkan penyeimbangan beban yang sebenarnya di beberapa simpul, dan kontrol lalu lintas terperindeks karena mekanisme kebijakan BGP.
MetalLB memiliki dua komponen:
- Pengontrol: bertanggung jawab untuk mengalokasikan IP untuk setiap layanan
type=loadbalancer
. - Pembicara: bertanggung jawab untuk mengiklankan IP menggunakan
ARP
atauBGP
protokol. Untuk memenuhi persyaratan ketersediaan tinggi (HA), penyebaran speaker adalah daemonset.
Catatan
- Pod speaker menggunakan jaringan host; yaitu, IP mereka adalah IP simpul, sehingga mereka dapat langsung mengirim pesan siaran melalui antarmuka jaringan host.
- Pod pengontrol adalah pod normal yang hidup di node apa pun di kluster.
- Dalam mode ARP, salah satu pod speaker dipilih sebagai pemimpin. Kemudian mengiklankan IP menggunakan pesan siaran ARP, mengikat IP dengan alamat MAC node tempatnya berada. Dengan demikian, semua lalu lintas pertama kali mencapai satu node, dan kemudian kube-proxy menyebarkannya secara merata ke semua pod backend layanan.
- Dalam mode BGP, semua node kluster membuat koneksi dengan semua rekan BGP yang dibuat di
BGP Peers
tab. Biasanya serekan BGP adalah sakelar TOR. Untuk menyiarkan informasi perutean BGP, rekan-rekan BGP harus dikonfigurasi sehingga mereka mengenali IP dan ASN node kluster. Ketika Anda menggunakan BGP dengan ECMP (Equal-Cost MultiPath), lalu lintas mencapai secara merata di semua simpul, dan karenanya mencapai penyeimbangan beban yang sebenarnya.
Membandingkan mode MetalLB L2 (ARP) dan BGP
Pilihan antara mode L2 dan BGP dengan MetalLB tergantung pada persyaratan spesifik, infrastruktur jaringan, dan skenario penyebaran Anda:
Aspek | MetalLB dalam mode L2 (ARP) | MetalLB dalam mode BGP |
---|---|---|
Gambaran Umum | Dalam mode lapisan 2, satu node K8s mengasumsikan tanggung jawab mengiklankan layanan ke jaringan lokal. Dari perspektif jaringan, sepertinya simpul K8s memiliki beberapa alamat IP yang ditetapkan ke antarmuka jaringannya. | Dalam mode BGP, setiap node K8s di kluster Anda membuat sesi peering BGP dengan router jaringan Anda, dan menggunakan sesi peering tersebut untuk mengiklankan IP layanan kluster eksternal. |
Penetapan alamat IP | Kumpulan alamat IP MetallLB harus berada di subnet yang sama dengan simpul K8s. | Kumpulan alamat IP MetallLB dapat berada di jaringan yang berbeda dari node K8s. |
Kompleksitas konfigurasi | Rendah. Karena Anda menyediakan alamat IP di jaringan yang sama dengan simpul Kubernetes, Anda hanya perlu menentukan CIDR IP atau kumpulan IP saat menyiapkan MetalLB. | Tinggi. Mengonfigurasi BGP memerlukan pengetahuan tentang protokol BGP dan pemahaman tentang infrastruktur jaringan Anda. |
Skalabilitas | Terbatas pada jaringan Lapisan 2, cocok untuk penyebaran K8s berukuran kecil hingga menengah. | Cocok untuk topologi jaringan yang kompleks dan penyebaran K8 skala besar. |
Kompatibilitas dengan jaringan infrastruktur | Bekerja dengan jaringan apa pun, tetapi dapat menyebabkan banjir ARP di kluster K8s besar, karena satu IP digunakan untuk semua layanan, dan bandwidth masuk layanan terbatas pada bandwidth satu simpul. | Memerlukan dukungan BGP dalam infrastruktur jaringan. |
Rekayasa lalu lintas | Kontrol terbatas atas perutean lalu lintas. | Kontrol halus atas perutean lalu lintas menggunakan atribut BGP. |
Konektivitas eksternal | Memerlukan lebih banyak konfigurasi untuk konektivitas eksternal. | Menyediakan konektivitas yang mulus dengan jaringan eksternal menggunakan perutean BGP. |
FAQ
Dapatkah instans MetalLB digunakan kembali di seluruh kluster AKS Arc?
Tidak, MetalLB tidak dapat digunakan kembali di seluruh kluster AKS Arc. MetalLB hidup sebagai pod dalam kluster Kubernetes, dan load balancer adalah Sumber Daya Kustom (CR). Anda harus menginstal ekstensi MetalLB Arc k8s menggunakan Azure CLI, templat portal Azure atau Azure Resource Manager, dan membuat load balancer untuk setiap kluster AKS Arc.