MetalLB: Bare Metal Load Balancer

Aspek terpenting ketika membangun cluster Kubernetes pada bare metal server adalah bagaimana dan dengan apa kita mengelola trafik yang masuk agar selalu balance dan available. Jika budget dan sumber daya yang tersedia terbatas, MetalLB agaknya layak teman-teman pertimbangkan 😀 Proses instalasinya pun cukup mudah, teman-teman bisa menggunakan Kustomize, Helm, maupun menggunakan kubectl dengan mengunduh manifest-nya terlebih dahulu. Saya sendiri lebih nyaman menggunakan Helm 😀 Ada beberapa mode konfigurasi yang dapat diimplementasikan yaitu konfigurasi mode Layer 2 dan BGP (Border Gateway Protocol). Konfigurasi yang paling mudah adalah menggunakan mode Layer 2, karena yang teman-teman butuhkan adalah kumpulan IP address. Kemudahan konfigurasi ini tentu memiliki kekurangan yaitu single-node bottlenecking, dan potensi slow failover karena trafik yang masuk dipusatkan pada satu node server. Untuk slow failover sendiri MetalLB menjamin itu hanya terjadi pada sistem operasi yang tidak terkini dan pun jika terjadi, hal itu tidak akan dari 10 detik. Tidak percaya? Silakan lihat sendiri di sini 😀

Lanjut proses instalasi 😀 harap custom file values.yaml Helm seperti berikut ya:

configInline:
  address-pools: 
    - name: default 
      protocol: layer2 
      addresses:        
      - 198.168.100.0/24

Tambahkan repo Helm MetalLB pada cluster Kubernetes dan mulai!

$ helm repo add metallb https://metallb.github.io/metallb

$ helm install metallb metallb/metallb -f values.yaml

Setelah ini teman-teman tidak perlu khawatir lagi menemui status pending atau stuck ketika membuat service dengan tipe LoadBalancer pada Kubernetes bare metal 😀

Mode Layer 2 maupun BGP memiliki kelebihan tersendiri. Jika teman-teman memilih mode BGP, maka informasi seperti IP address router, AS number router dan MetalLB perlu ditetapkan terlebih dahulu. Namun perlu digaris bawahi, MetalLB meminta kita untuk mengimplementasikan tools ini pada sistem yang masih beta, mengingat umur project ini yang belum terlalu lama. Pada akhirnya, mau menjalankannya di lingkungan produksi atau tidak, keputusan di tangan teman-teman sendiri 😀 harap identifikasi risikonya terlebih dahulu ya 😉


Leave a comment