34.4. MetalLB アドレスプールの設定
クラスター管理者は、アドレスプールを追加、変更、および削除できます。MetalLB Operator は、アドレスプールカスタムリソースを使用して、MetalLB がサービスに割り当てることのできる IP アドレスを設定します。例で使用されている namespace は、namespace が metallb-system
であることを前提としています。
34.4.1. IPAddressPool カスタムリソースについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.10 の 「MetalLB を使用した負荷分散」に記載されているアドレスプールカスタムリソース定義 (CRD) および API は、4.15 でも引き続き使用できます。ただし、AddressPool
CRD を使用する場合、レイヤ 2 プロトコルまたは BGP プロトコルを使用した IPAddressPool
からの IP アドレスのアドバタイズに関連する拡張機能はサポートされません。
次の表では、IPAddressPool
カスタムリソースのフィールドについて説明します。
フィールド | 型 | 説明 |
---|---|---|
|
|
アドレスプールの名前を指定します。サービスを追加する場合は、 |
|
| アドレスプールの namespace を指定します。MetalLB Operator が使用するものと同じ namespace を指定します。 |
|
|
オプション: |
|
| MetalLB Operator がサービスに割り当てる IP アドレスのリストを指定します。1 つのプールで複数の範囲を指定できます。それらはすべて同じ設定を共有します。CIDR 表記で各範囲を指定するか、開始および終了の IP アドレスをハイフンで区切って指定します。 |
|
|
オプション: MetalLB がこのプールから IP アドレスを自動的に割り当てるかどうかを指定します。 注記
IP アドレスプール設定の場合、 |
|
|
オプション: これを有効にすると、 |
spec.serviceAllocation
仕様を設定することにより、IPAddressPool
からサービスおよび namespace に IP アドレスを割り当てることができます。
フィールド | 型 | 説明 |
---|---|---|
|
| オプション: 複数の IP アドレスプールがサービスまたは namespace に一致する場合の IP アドレスプール間の優先度を定義します。数字が小さいほど優先度が高いことを示します。 |
|
| オプション: IP アドレスプール内の IP アドレスに割り当てることができる namespace のリストを指定します。 |
|
| オプション: リスト形式のラベルセレクターを使用して、IP アドレスプールから IP アドレスに割り当てることができる namespace ラベルを指定します。 |
|
| オプション: リスト形式のラベルセレクターを使用して、アドレスプールから IP アドレスに割り当てることができるサービスラベルを指定します。 |
34.4.2. アドレスプールの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、クラスターにアドレスプールを追加して、MetalLB がロードバランサーサービスに割り当てることのできる IP アドレスを制御できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
以下の例のような内容で、
ipaddresspool.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
IPAddressPool
に割り当てられたこのラベルは、BGPAdvertisement
CRD のipAddressPoolSelectors
によって参照され、IPAddressPool
をアドバタイズメントに関連付けることができます。
IP アドレスプールの設定を適用します。
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを入力して、アドレスプールを表示します。
oc describe -n metallb-system IPAddressPool doc-example
$ oc describe -n metallb-system IPAddressPool doc-example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
doc-example
などのアドレスプール名と IP アドレス範囲が出力に存在することを確認します。
34.4.3. VLAN の MetalLB アドレスプールの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、クラスターにアドレスプールを追加することで、MetalLB がロードバランサーサービスに割り当てることのできる、作成された VLAN の IP アドレスを制御できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - 別の VLAN を設定する。
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
次の例のようなファイル (
ipaddresspool-vlan.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスプールの設定を適用します。
oc apply -f ipaddresspool-vlan.yaml
$ oc apply -f ipaddresspool-vlan.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定を VLAN に適用するために、
spec
のgatewayConfig.ipForwarding
をGlobal
に設定する必要があります。次のコマンドを実行して、ネットワーク設定カスタムリソース (CR) を編集します。
oc edit network.operator.openshift/cluster
$ oc edit network.operator.openshift/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.defaultNetwork.ovnKubernetesConfig
セクションを更新して、gatewayConfig.ipForwarding
をGlobal
に設定します。次のようになります。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
34.4.4. アドレスプールの設定例 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、特定環境のアドレスプールの設定を示しています。
34.4.4.1. 例: IPv4 および CIDR 範囲 リンクのコピーリンクがクリップボードにコピーされました!
Classless Inter-Domain Routing (CIDR) 表記で IP アドレスの範囲を指定できます。CIDR 表記と、ハイフンを使用する表記を組み合わせて下層と上限を分けることができます。
34.4.4.2. 例: IP アドレスの割り当て リンクのコピーリンクがクリップボードにコピーされました!
autoAssign
フィールドを false
に設定すると、MetalLB がアドレスプールから IP アドレスを自動的に割り当てるのを防止できます。その場合、IP アドレスプールから単一の IP アドレスまたは複数の IP アドレスを割り当てることができます。IP アドレスを割り当てるには、spec.addresses
パラメーター内のターゲット IP アドレスに CIDR 表記 /32
を追加します。この設定により、特定の IP アドレスのみが割り当て可能になります。予約されていない IP アドレスは、アプリケーション用に残されます。
複数の IP アドレスを割り当てる IPAddressPool
CR の例
サービスを追加する場合は、アドレスプールから特定の IP アドレスを要求することも、アノテーションでプール名を指定して、そのプールから任意の IP アドレスを要求することもできます。
34.4.4.3. 例: IPv4 および IPv6 アドレス リンクのコピーリンクがクリップボードにコピーされました!
IPv4 および IPv6 を使用するアドレスプールを追加できます。複数の IPv4 の例と同様に、addresses
一覧で複数の範囲を指定できます。
サービスに、単一の IPv4 アドレス、単一の IPv6 アドレス、またはその両方を割り当てるかどうかは、サービスの追加方法によって決まります。spec.ipFamilies
フィールドと spec.ipFamilyPolicy
フィールドでは、IP アドレスをサービスに割り当てる方法を制御します。
- 1
10.0.100.0/28
は、ローカルネットワーク IP アドレスとそれに続くネットワーク接頭辞/28
です。
34.4.4.4. 例: IP アドレスプールをサービスまたは namespace に割り当てる リンクのコピーリンクがクリップボードにコピーされました!
IPAddressPool
から指定したサービスと namespace に IP アドレスを割り当てることができます。
サービスまたは namespace を複数の IP アドレスプールに割り当てる場合、MetalLB は優先度の高い IP アドレスプールから使用可能な IP アドレスを使用します。割り当てられた優先度の高い IP アドレスプールから使用可能な IP アドレスがない場合、MetalLB は、優先度の低い、または優先度のない IP アドレスプールから使用可能な IP アドレスを使用します。
namespaceSelectors
と serviceSelectors
の仕様には、matchLabels
ラベルセレクター、matchExpressions
ラベルセレクター、またはその両方を使用できます。この例は、仕様ごとに 1 つのラベルセレクターを示しています。