2 MetalLBモジュールのインストール
この章では、MetalLBモジュールをインストールして、ベア・メタルOracle Cloud Native EnvironmentインスタンスでMetalLBを使用してKubernetesアプリケーションのアプリケーション・ロード・バランサを設定する方法について説明します。
前提条件
この項では、MetalLBモジュールを設定するために必要な前提条件について説明します。
ヘルス・チェック・エンドポイント・ネットワーク・ポートの設定
ServiceInternalTrafficPolicyをCluster (デフォルト)に設定してKubernetes LoadBalancerサービスを使用する場合、ヘルス・チェック・エンドポイントはTCPポート10256で使用可能であることが予想されます。kube-proxyは、このポートにリスナーを作成します。これにより、ノード上でkube-proxyが正常であることを確認するためのLoadBalancerサービスへのアクセスが提供されます。 LoadBalancerサービスは、このポリシーを使用してトラフィックをルーティングできるノードを決定します。 このポートでトラフィックを許可するには、すべてのKubernetesノードでTCPポート10256をオープンする必要があります。 各Kubernetesノードで、次を実行します:
sudo firewall-cmd --zone=public --add-port=10256/tcp
sudo firewall-cmd --zone=public --add-port=10256/tcp --permanent
sudo systemctl restart firewalld.service
ServiceInternalTrafficPolicyの詳細については、アップストリーム「Kubernetesドキュメント」を参照してください。
ネットワーク・セキュリティ・リストのTCPポート10256でトラフィックが許可されていることを確認します。
ネットワーク・ポートの設定
Kubernetesワーカー・ノードで次のポートを開く必要があります。 各ワーカー・ノードで次を実行します:
sudo firewall-cmd --zone=public --add-port=7946/tcp --permanent
sudo firewall-cmd --zone=public --add-port=7946/udp --permanent
sudo systemctl restart firewalld.service
MetalLB構成ファイルの作成
MetalLBインスタンスを構成するには、operatorノードにMetalLB構成ファイルを指定する必要があります。 構成ファイル(YAMLカスタム・リソース定義(CRD)ファイル形式である必要があります)では、IPAddressPools, BGPPeer, BGPAdvertisementやL2Advertisementなどのオプションを使用してMetalLBを構成できます。
Platform APIサーバーは、MetalLBモジュールの作成時に構成ファイルに含まれている情報を使用します。
構成ファイルで使用できるオプションの詳細は、アップストリームの「MetalLBのドキュメント」を参照してください。
次の例では、MetalLBレイヤー2構成を使用し、192.168.1.240から192.168.1.250のIPアドレス範囲を指定して、Kubernetesアプリケーションのロード・バランサIPを作成します。 このサンプル・ファイルはmetallb-config.yamlという名前で、次のものが含まれます:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
creationTimestamp: null
name: default
namespace: metallb
spec:
addresses:
- 192.168.1.240-192.168.1.250
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
creationTimestamp: null
name: l2advertisement1
namespace: metallb
spec:
ipAddressPools:
- default
MetalLBモジュールのデプロイ
単一のolcnectl module createコマンドを使用して、KubernetesクラスタにMetalLBを設定するために必要なすべてのモジュールをデプロイできます。 このメソッドは、Kubernetesクラスタのデプロイと同時にMetalLBモジュールをデプロイする場合に役立ちます。
Kubernetesモジュールの既存のデプロイメントがある場合は、MetalLBモジュールをデプロイするときにそのインスタンスを指定できます。
この項では、MetalLBモジュールのデプロイに必要な各コンポーネントのインストールについて説明します。
モジュールの作成時に使用可能なプラットフォームCLIコマンド・オプションの完全なリストは、「プラットフォーム・コマンドライン・インタフェース」のolcnectl module createコマンドを参照してください。
MetalLBモジュールをデプロイするには:
-
環境をまだ設定していない場合は、モジュールをデプロイできる環境を作成します。 環境の設定の詳細は、「インストール」を参照してください。 この例の環境の名前は、
myenvironmentです。 -
Kubernetesモジュールをまだ設定またはデプロイしていない場合は、設定します。 Kubernetesモジュールを環境に追加する方法の詳細は、「Kubernetesモジュール」を参照してください。 この例のKubernetesモジュールの名前は、
myclusterです。 -
MetalLBモジュールを作成し、
--metallb-kubernetes-moduleオプションを使用して、myclusterという名前のKubernetesモジュールに関連付けます。 この例では、MetalLBモジュールの名前はmymetallbです。olcnectl module create \ --environment-name myenvironment \ --module metallb \ --name mymetallb \ --metallb-kubernetes-module mycluster \ --metallb-config metallb-config.yaml--moduleオプションは、モジュール・タイプを作成(metallb)に設定します。 MetalLBモジュールの名前は、--nameオプションを使用して定義します(この場合はmymetallbです)。--metallb-kubernetes-moduleオプションは、Kubernetesモジュールの名前を設定します。--metallb-configオプションは、MetalLB構成ファイルのロケーションを設定します。 このファイルは、指定されたパスのオペレータ・ノードで使用可能である必要があります。 この構成ファイルの作成については、「MetalLB構成ファイルの作成」を参照してください。モジュールの追加時に必要なオプションをすべて含めない場合は、それらを指定するように求められます。
-
olcnectl module installコマンドを使用して、MetalLBモジュールをインストールします。 たとえば:olcnectl module install \ --environment-name myenvironment \ --name mymetallbオプションで、
--log-levelオプションを使用して、コマンド出力に表示されるロギングのレベルを設定できます。 デフォルトでは、エラー・メッセージが表示されます。 たとえば、次を含めると、すべてのメッセージが表示されるようにロギング・レベルを設定できます:--log-level debugログ・メッセージは、操作ログとしても保存されます。 操作ログは、コマンドの実行中または完了時に表示できます。 操作ログの使用方法の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。
MetalLBモジュールは、Kubernetesクラスタにデプロイされます。
MetalLBモジュールのデプロイメントの確認
オペレータ・ノードでolcnectl module instancesコマンドを使用して、MetalLBモジュールがデプロイされていることを確認できます。 たとえば:
olcnectl module instances \
--environment-name myenvironment出力は次のようになります:
INSTANCE MODULE STATE
mymetallb metallb installed
mycluster kubernetes installed
... MODULE列のmetallbのエントリは、installed状態であることに注意してください。
また、olcnectl module reportコマンドを使用して、モジュールに関する情報を確認します。 たとえば、次のコマンドを使用して、myenvironmentのmymetallbという名前のMetalLBモジュールを確認します:
olcnectl module report \
--environment-name myenvironment \
--name mymetallb \
--children olcnectl module reportコマンドの構文の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。