Kubernetes 中的 Metallb 與 Nginx Ingress

Kubernetes 中的 Metallb 與 Nginx Ingress

據我了解,

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 終止等,並且提供者會自動在其基礎架構上建立負載平衡器。

相關內容