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-metallb詳細については。

MetalLB がない場合、ベアメタルの nginx イングレス サービスは、pendingIP が割り当てられていないため、状態が維持されます。MetalLB は、nginx に外部 IP を割り当てる役割を果たします。

Nginx がなければ、すべてのクライアントで TLS 終了を実行する必要がありますが、これは一般的には推奨されません。

別の見方をすると:

  • nginx ingressはタイプを処理するIngress
  • metallbは型を処理するLoadBalancer

この混乱は、上記の操作が根本的に異なるにもかかわらず、多くの場合「ロード バランサー」によって実行されるという事実から生じていると考えられます。

クラウドでも同じことが当てはまることに注意してください。TLS 終了などを処理するには Ingress をデプロイする必要があり、プロバイダーはインフラストラクチャ上にロード バランサーを自動的に作成します。

関連情報