私の理解では、
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 イングレス サービスは、pending
IP が割り当てられていないため、状態が維持されます。MetalLB は、nginx に外部 IP を割り当てる役割を果たします。
Nginx がなければ、すべてのクライアントで TLS 終了を実行する必要がありますが、これは一般的には推奨されません。
別の見方をすると:
- nginx ingressはタイプを処理する
Ingress
- metallbは型を処理する
LoadBalancer
この混乱は、上記の操作が根本的に異なるにもかかわらず、多くの場合「ロード バランサー」によって実行されるという事実から生じていると考えられます。
クラウドでも同じことが当てはまることに注意してください。TLS 終了などを処理するには Ingress をデプロイする必要があり、プロバイダーはインフラストラクチャ上にロード バランサーを自動的に作成します。