19 MetalLB #
MetalLBの公式ドキュメントを参照してください。
MetalLBは、標準のルーティングプロトコルを使用する、ベアメタルKubernetesクラスタ用のロードバランサの実装です。
ベアメタル環境では、ネットワークロードバランサの設定がクラウドセットアップよりも著しく複雑になります。クラウド設定でのわかりやすいAPIコールとは異なり、ベアメタルでは、高可用性(HA)を管理したり、シングルノードのロードバランサに特有の潜在的な単一障害点(SPOF)に対処したりするために、専用のネットワークアプライアンス、またはロードバランサと仮想IP (VIP)設定の組み合わせが必要になります。このような設定は自動化しにくく、コンポーネントが動的にスケールアップ/ダウンするKubernetesのデプロイメントでは課題となります。
MetalLBでは、こうした課題に対処するために、Kubernetesモデルを利用してLoadBalancerタイプのサービスを作成し、ベアメタルセットアップであってもクラウド環境であるかのように動作させます。
2つの異なるアプローチがあります。L2モード(ARPトリックを使用する)アプローチか、BGPを使用するアプローチです。主にL2では特別なネットワーク機器は必要ありませんが、一般的にはBGPのほうが優れています。これはユースケースによって異なります。
19.1 SUSE EdgeでのMetalLBの用途 #
SUSE Edgeでは、主に次の2つの方法でMetalLBを使用します。
ロードバランサソリューションとして: MetalLBは、ベアメタルマシン用のロードバランサソリューションとして機能します。
HA K3s/RKE2セットアップの場合: MetalLBでは、仮想IPアドレスを使用してKubernetes APIを負荷分散できます。
APIを公開できるようにするため、Endpoint Copier Operator (第20章 「Endpoint Copier Operator」)を使用して、
kubernetes
サービスからkubernetes-vip
LoadBalancerサービスへのK8s APIエンドポイントの同期を維持します。
19.2 ベストプラクティス #
L2モードでのMetalLBのインストールについては、第25章 「K3s上のMetalLB (レイヤ2モードを使用)」で説明されています。
kube-api-server
の前面にインストールして高可用性トポロジを実現する方法のガイドについては、第26章 「Kubernetes APIサーバの前面のMetalLB」を参照してください。
19.3 既知の問題 #
K3sには、
Klipper
というロードバランサソリューションが付属しています。MetalLBを使用するには、Klipper
を無効にする必要があります。このためには、K3sのドキュメントで説明されているように、--disable servicelb
オプションを指定してK3sサーバを起動します。