33.5. IP アドレスプールのアドバタイズメントについて
IP アドレスがレイヤー 2 プロトコル、BGP プロトコル、またはその両方でアドバタイズされるように MetalLB を設定できます。レイヤー 2 では、MetalLB ではフォールトトレラントな外部 IP アドレスを使用できます。BGP を使用すると、MetalLB で外部 IP アドレスに対するフォールトトレランス機能および負荷分散が提供されます。
MetalLB は、同じ IP アドレスのセットに対して L2 と BGP を使用したアドバタイズをサポートします。
MetalLB は、ネットワーク上のノードのサブセットに対して、特定の BGP ピアにアドレスプールを効果的に割り当てる柔軟性を提供します。これにより、たとえばノードの分離やネットワークのセグメンテーションを容易にするなど、より複雑な設定が可能になります。
33.5.1. BGPAdvertisement カスタムリソースについて リンクのコピーリンクがクリップボードにコピーされました!
BGPAdvertisements
オブジェクトのフィールドは、次の表に定義されています。
フィールド | 型 | 説明 |
---|---|---|
|
| BGP アドバタイズメントの名前を指定します。 |
|
| BGP アドバタイズメントの namespace を指定します。MetalLB Operator が使用するものと同じ namespace を指定します。 |
|
|
オプション: 32 ビット CIDR マスクに含めるビット数を指定します。マスクが複数のサービス IP アドレスのルートに適用され、speaker は集約されたルートをアドバタイズし、speaker が BGP ピアにアドバタイズするルートを集約します。たとえば、集約の長さが |
|
|
オプション: 128 ビット CIDR マスクに含めるビット数を指定します。たとえば、集約の長さが |
|
| オプション: 1 つ以上の BGP コミュニティーを指定します。各コミュニティーは、16 ビット値 2 つをコロン文字で区切って指定します。一般的なコミュニティーは、16 ビット値として指定する必要があります。
|
|
| オプション: このアドバタイズメントのローカル設定を指定します。この BGP 属性は、Autonomous System 内の BGP セッションに適用されます。 |
|
|
オプション: 名前で選択された、このアドバタイズメントでアドバタイズする |
|
|
オプション: このアドバタイズメントでアドバタイズされる |
|
|
オプション: |
|
|
オプション: リストを使用して、MetalLB サービス IP アドレスのアドバタイズメントを受信する各 |
33.5.2. BGP アドバタイズメントと基本的なユースケースを使用する MetalLB の設定 リンクのコピーリンクがクリップボードにコピーされました!
MetalLB を次のとおり設定し、ピア BGP ルーターが、MetalLB がサービスに割り当てるロードバランサー IP アドレスごとに、203.0.113.200/32
ルート 1 つ、fc00:f853:ccd:e799::1/128
ルート 1 つを受信するようにします。localPref
および communities
フィールドが指定されていないため、ルートは localPref
をゼロに設定して BGP コミュニティーなしでアドバタイズされます。
33.5.2.1. 例: BGP を使用する基本的なアドレスプール設定のアドバタイズメント リンクのコピーリンクがクリップボードにコピーされました!
IPAddressPool
が BGP プロトコルでアドバタイズされるように、MetalLB を次のように設定します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
IP アドレスプールを作成します。
以下の例のような内容で、
ipaddresspool.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスプールの設定を適用します。
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP アドバタイズメントを作成します。
以下の例のような内容で、
bgpadvertisement.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を適用します。
oc apply -f bgpadvertisement.yaml
$ oc apply -f bgpadvertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.3. BGP アドバタイズメントと高度なユースケースを使用する MetalLB の設定 リンクのコピーリンクがクリップボードにコピーされました!
MetalLB を次のように設定し、MetalLB が 203.0.113.200
と 203.0.113.203
、fc00:f853:ccd:e799::0
と fc00:f853:ccd:e799::f
の範囲の IP アドレスを割り当てるようにします。
MetalLB が 203.0.113.200
の IP アドレスをサービスに割り当てる例を見ていき、これら 2 つの BGP アドバタイズメントを説明します。この IP アドレスを例にとると、speaker は 2 つのルートを BGP ピアにアドバタイズします。
-
localPref
が100
に、コミュニティーがNO_ADVERTISE
コミュニティーの数値に設定されている203.0.113.200/32
。この仕様は、ピアルーターにこのルートを使用できることを指定していますが、このルートに関する情報を BGP ピアに伝播しないようにします。 -
MetalLB で割り当てられたロードバランサーの IP アドレスを 1 つのルートに集約する
203.0.113.200/30
。MetalLB は、コミュニティー属性が8000:800
に設定された BGP ピアに集約ルートをアドバタイズします。BGP ピアは、203.0.113.200/30
ルートを他の BGP ピアに伝播します。トラフィックが speaker のあるノードにルーティングされる場合には、203.0.113.200/32
ルートを使用して、トラフィックがクラスターに転送され、サービスに関連付けられている Pod に転送されます。
さらにサービスを追加し、MetalLB でプールからより多くのロードバランサー IP アドレスを割り当てると、ピアルーターはサービスごとにローカルルート 203.0.113.20x/32
を 1 つと、203.0.113.200/30
集約ルートを受け取ります。追加する各サービスは /30
ルートを生成しますが、MetalLB は、ピアルーターと通信する前に、ルートの重複を排除して 1 つの BGP アドバタイズにします。
33.5.3.1. 例: BGP を使用する高度なアドレスプール設定のアドバタイズメント リンクのコピーリンクがクリップボードにコピーされました!
IPAddressPool
が BGP プロトコルでアドバタイズされるように、MetalLB を次のように設定します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
IP アドレスプールを作成します。
以下の例のような内容で、
ipaddresspool.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスプールの設定を適用します。
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP アドバタイズメントを作成します。
以下の例のような内容で、
bgpadvertisement1.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を適用します。
oc apply -f bgpadvertisement1.yaml
$ oc apply -f bgpadvertisement1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例のような内容で、
bgpadvertisement2.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を適用します。
oc apply -f bgpadvertisement2.yaml
$ oc apply -f bgpadvertisement2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.4. ノードのサブセットからの IP アドレスプールのアドバタイズ リンクのコピーリンクがクリップボードにコピーされました!
特定のノードセットのみから IP アドレスプールから IP アドレスをアドバタイズするには、BGPAdvertisement カスタムリソースで .spec.nodeSelector
仕様を使用します。この仕様は、IP アドレスのプールをクラスター内の一連のノードに関連付けます。これは、クラスター内の異なるサブネット上にノードがあり、特定のサブネット (パブリックに面したサブネットのみなど) のアドレスプールから IP アドレスをアドバタイズしたい場合に役立ちます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
カスタムリソースを使用して IP アドレスプールを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BGPAdvertisement カスタムリソースで
.spec.nodeSelector
値を定義することにより、pool1
からの IP アドレスがアドバタイズするクラスター内のノードを制御します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この例では、pool1 の IP アドレスは NodeA
と NodeB
からの み
アドバタイズします。
33.5.5. L2Advertisement カスタムリソースについて リンクのコピーリンクがクリップボードにコピーされました!
l2Advertisements
オブジェクトのフィールドは、次の表に定義されています。
フィールド | 型 | 説明 |
---|---|---|
|
| L2 アドバタイズメントの名前を指定します。 |
|
| L2 アドバタイズメントの namespace を指定します。MetalLB Operator が使用するものと同じ namespace を指定します。 |
|
|
オプション: 名前で選択された、このアドバタイズメントでアドバタイズする |
|
|
オプション: このアドバタイズメントでアドバタイズされる |
|
|
オプション: 重要 ネクストホップとしてアナウンスするノードの制限は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。 Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。 |
|
|
オプション: ロードバランサー IP をアナウンスするために使用される |
33.5.6. L2 アドバタイズメントを使用した MetalLB の設定 リンクのコピーリンクがクリップボードにコピーされました!
IPAddressPool
が L2 プロトコルでアドバタイズされるように、MetalLB を次のように設定します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
IP アドレスプールを作成します。
以下の例のような内容で、
ipaddresspool.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスプールの設定を適用します。
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
L2 アドバタイズメントを作成します。
以下の例のような内容で、
l2advertisement.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を適用します。
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.7. L2 アドバタイズメントとラベルを使用した MetalLB の設定 リンクのコピーリンクがクリップボードにコピーされました!
BGPAdvertisement
および L2Advertisement
カスタムリソース定義の ipAddressPoolSelectors
フィールドは、名前自体ではなく、IPAddressPool
に割り当てられたラベルに基づいて IPAddressPool
をアドバタイズメントに関連付けるために使用されます。
この例は、ipAddressPoolSelectors
フィールドを設定することにより、IPAddressPool
が L2 プロトコルでアドバタイズされるように MetalLB を設定する方法を示しています。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
IP アドレスプールを作成します。
以下の例のような内容で、
ipaddresspool.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスプールの設定を適用します。
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ipAddressPoolSelectors
を使用して IP をアドバタイズする L2 アドバタイズメントを作成します。以下の例のような内容で、
l2advertisement.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を適用します。
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
33.5.8. 選択したインターフェイスの L2 アドバタイズを使用した MetalLB の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、サービスに割り当てられた IP アドレスプールの IP アドレスが、すべてのネットワークインターフェイスからアドバタイズされます。L2Advertisement
カスタムリソース定義の interfaces
フィールドは、IP アドレスプールをアドバタイズするネットワークインターフェイスを制限するために使用されます。
この例では、すべてのノードの interfaces
フィールドにリストされているネットワークインターフェイスからのみ IP アドレスプールがアドバタイズされるように、MetalLB を設定する方法を示します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
IP アドレスプールを作成します。
ipaddresspool.yaml
などのファイルを作成し、次の例のように設定の詳細を入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、IP アドレスプールの設定を適用します。
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
interfaces
セレクターを使用して IP をアドバタイズする L2 アドバタイズメントを作成します。l2advertisement.yaml
などの YAML ファイルを作成し、次の例のように設定の詳細を入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、広告の設定を適用します。
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
インターフェイスセレクターは、MetalLB が L2 を使用して特定の IP をアナウンスするノードを選択する方法には影響しません。ノードが選択されたインターフェイスを持たない場合、選択されたノードはサービスをアナウンスしません。