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 Serverは、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モジュールのデプロイに必要な各コンポーネントのインストールについて説明します。
モジュールの作成時に使用可能なPlatform CLIコマンド・オプションの完全なリストは、「Platform Command-Line Interface」の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
ログ・メッセージは、操作ログとしても保存されます。 操作ログは、コマンドの実行中または完了時に表示できます。 操作ログの使用方法の詳細は、「Platform Command-Line Interface」を参照してください。
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
コマンドの構文の詳細は、「Platform Command-Line Interface」を参照してください。