【メタルエルビー】

MetalLB とは?

公開:
💡 クラウドの便利な受付係を、自分のサーバーでも再現してくれる代役さん。
📌 このページのポイント
MetalLB によるオンプレ LoadBalancer 外部クライアント ブラウザ / API MetalLB IP Pool から外部IP割当 L2 Mode BGP Mode K8s クラスタ LoadBalancer Service Node 1 Node 2 Node 3 Node 4 192.168.1.100 MetalLB が割当 クラウドなしでも LoadBalancer Service が利用可能
MetalLB がオンプレ K8s に外部 IP を割り当ててロードバランシングを実現するイメージ
ひよこ ひよこ
ペンギン先生、MetalLBって何なの?
ペンギン先生 ペンギン先生
K8sのServiceには「LoadBalancer」というタイプがあって、クラウド環境なら自動的に外部IPが割り当てられるんだけど、オンプレ環境には同じ仕組みがないんだよ。MetalLBはその機能をオンプレでも使えるようにしてくれるOSSだよ。
ひよこ ひよこ
なんでクラウドにはあってオンプレにはないの?
ペンギン先生 ペンギン先生
AWSならELB、GCPならCloud Load Balancingというサービスがクラウド側で提供されていて、K8sがそれらのAPIを呼び出すんだよ。オンプレには同じAPIがないから、MetalLBが代わりにその役割を担うんだ。
ひよこ ひよこ
どうやってIPアドレスを割り当てるの?
ペンギン先生 ペンギン先生
まず管理者がIPアドレスプールを設定しておくよ。LoadBalancer Serviceが作られると、MetalLBがそのプールからIPを取り出して割り当てて、ネットワークに広告するんだ。
ひよこ ひよこ
ネットワークへの広告ってどういうこと?
ペンギン先生 ペンギン先生
2つの方式があって、L2モード(Layer 2)はARP/NDPで「このIPはこのノードにあるよ」と同一セグメント通知するよ。BGPモードはルーターにBGPプロトコルで経路情報を広告して、より大規模なネットワークに対応できるんだ。
ひよこ ひよこ
L2モードとBGPモードはどう使い分けるの?
ペンギン先生 ペンギン先生
L2モードは設定がシンプルで小規模環境向きだけど、フェイルオーバー時に数秒の遅延が出ることがあるよ。BGPモードは設定が複雑だけど本当のロードバランシングが実現でき、大規模・高可用性環境に向いているんだ。
ひよこ ひよこ
MetalLBがあれば自宅K8sラボでも本格的なサービス公開ができるんだね!
ペンギン先生 ペンギン先生
そうだよ。RaspberryPiクラスタやベアメタルサーバーのホビー環境でも、MetalLBを入れるだけでIngressと組み合わせた本格的なサービス公開ができるようになるんだ。オンプレK8sの定番ツールとして広く使われているよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「MetalLB」って出てきたら「オンプレK8sにロードバランサ機能を追加するOSS」と思えればだいたいOK!
📖 おまけ:英語の意味
「MetalLB」 = Metal(ベアメタル)+ LB(ロードバランサー)
💬 「ベアメタル(物理サーバー)で動くロードバランサー」という意味で、クラウドなしのK8s環境に対応している点が名前の由来だよ。
← 用語集にもどる