據我了解,
Metallb 是一個負載平衡器,它將 IP 位址分配給服務,該服務可以暴露給外界。
Nginx Ingress 就像普通的 nginx 一樣,但它駐留在 kubernetes 中並提供到不同路由的路由。
我的問題是,如果我有 Nginx Ingress,為什麼還需要 Metallb?因為 nginx ingress 會將連接埠 80/443 公開給大眾,我可以使用它來路由到我需要的服務。
謝謝。
答案1
您將需要兩者,因為它們解決不同的問題:
MetalLB 接收來自叢集外部的請求,並在叢集中的負載平衡器之間平衡它們
Nginx 接收來自叢集外部的請求並在節點之間平衡它們。
看https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#a-pure-software-solution-metalb了解詳情。
如果沒有 MetalLB,裸機中的 nginx 入口服務將保持pending
狀態,因為沒有為其指派 IP。 MetalLB 負責為 nginx 指派外部 IP。
如果沒有 Nginx,您將必須在每個用戶端上執行 TLS 終止,這通常是不可取的。
另一種看待它的方式:
- nginx ingress 處理類型
Ingress
- Metallb 處理類型
LoadBalancer
混亂可能源於這樣一個事實:雖然上述操作本質上不同,但它們通常是由「負載平衡器」完成的。
請注意,這同樣適用於雲端:您需要部署一個入口來處理 TLS 終止等,並且提供者會自動在其基礎架構上建立負載平衡器。