Kubernetes MetalLB 使用指南
什麼是 MetalLB?
MetalLB 是一個用於裸機 Kubernetes 叢集的負載平衡器實作。它提供了在本地環境中使用 LoadBalancer 類型 Service 的能力,填補了雲端和本地 Kubernetes 環境之間的功能差距。
MetalLB 的主要功能:
- IP 位址分配:為 LoadBalancer Service 自動分配外部 IP 位址
- 流量路由:將外部流量路由到正確的 Service 與後端 Pod
- 高可用性:支援多節點部署與故障轉移
- 協定支援:支援 Layer 2 (ARP/NDP) 和 BGP 模式
為什麼需要 MetalLB?
在雲端 Kubernetes 環境中,當我們建立 type: LoadBalancer 的 Service,雲端供應商通常會自動配置一組外部 IP 或負載平衡器,讓叢集外部可以連進服務。
但在 Minikube、裸機伺服器或本機實驗環境中,Kubernetes 本身不會幫你分配外部 LoadBalancer IP。這時候如果直接建立 LoadBalancer Service,很常看到 EXTERNAL-IP 一直停在 <pending>。
MetalLB 解決的就是這個問題。它會從指定的 IP 位址池分配外部 IP 給 LoadBalancer Service,讓本機或內網 Kubernetes 也能用接近雲端的方式對外暴露服務。
本篇會使用 Minikube 作為示範環境,先啟用 MetalLB,接著配置 192.168.49.100-192.168.49.150 作為 LoadBalancer IP 位址池,最後沿用前面文章建立好的 dockertest Spring Boot 應用程式,透過 MetalLB 取得外部 IP 並測試連線。