3.6. サブネット間の通信を確立する
一般的な OpenShift Container Platform クラスターのセットアップでは、コントロールプレーンとコンピュートノードを含むすべてのノードが同じネットワーク内に存在します。ただし、エッジコンピューティングのシナリオでは、コンピュートノードをエッジの近くに配置することが有益な場合があります。その場合、コントロールプレーンやローカルコンピュートノードが使用するサブネットとは異なるネットワークセグメントまたはサブネットをリモートノードに使用することもよくあります。このようなセットアップにより、エッジのレイテンシーが減少し、拡張性が向上します。
OpenShift Container Platform をインストールする前に、リモートノードを含むエッジサブネットがコントロールプレーンノードを含むサブネットに到達し、コントロールプレーンからのトラフィックも受信できるように、ネットワークを適切に設定する必要があります。
クラスターのインストール時に、install-config.yaml
設定ファイルのネットワーク設定内のノードに永続的な IP アドレスを割り当てます。これを行わないと、ノードには、トラフィックがノードに到達する方法に影響を与える可能性がある一時的な IP アドレスが割り当てられる可能性があります。たとえば、ノードに一時的な IP アドレスが割り当てられ、ノードにボンディングされたインターフェイスを設定した場合、ボンディングインターフェイスは別の IP アドレスを受け取る可能性があります。
デフォルトのロードバランサーの代わりにユーザー管理のロードバランサーを設定することで、同じサブネットまたは複数のサブネットでコントロールプレーンノードを実行できます。複数のサブネット環境を使用すると、ハードウェア障害やネットワーク停止によって OpenShift Container Platform クラスターが失敗するリスクを軽減できます。詳細は、「ユーザー管理ロードバランサーのサービス」および「ユーザー管理ロードバランサーの設定」を参照してください。
複数のサブネット環境でコントロールプレーンノードを実行するには、次の主要なタスクを完了する必要があります。
-
install-config.yaml
ファイルのloadBalancer.type
パラメーターでUserManaged
を指定して、デフォルトのロードバランサーの代わりにユーザー管理のロードバランサーを設定します。 -
install-config.yaml
ファイルのingressVIPs
およびapiVIPs
パラメーターでユーザー管理のロードバランサーのアドレスを設定します。 -
複数のサブネットの Classless Inter-Domain Routing (CIDR) とユーザー管理のロードバランサーの IP アドレスを、
install-config.yaml
ファイルのnetworking.machineNetworks
パラメーターに追加します。
複数のサブネットを持つクラスターをデプロイするには、redfish-virtualmedia
や idrac-virtualmedia
などの仮想メディアを使用する必要があります。
この手順では、2 番目のサブネットにあるリモートコンピュートノードが 1 番目のサブネットにあるコントロールプレーンノードと効果的に通信できるようにするために必要なネットワーク設定と、1 番目のサブネットにあるコントロールプレーンノードが 2 番目のサブネットにあるリモートコンピュートノードと効果的に通信できるようにするために必要なネットワーク設定を詳しく説明します。
この手順では、クラスターは 2 つのサブネットにまたがります。
-
1 番目のサブネット (
10.0.0.0
) には、コントロールプレーンとローカルコンピュートノードが含まれています。 -
2 番目のサブネット (
192.168.0.0
) には、エッジコンピュートノードが含まれています。
手順
1 番目のサブネットが 2 番目のサブネットと通信するように設定します。
次のコマンドを実行して、コントロールプレーンノードに
root
としてログインします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo su -
$ sudo su -
次のコマンドを実行して、ネットワークインターフェイスの名前を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli dev status
# nmcli dev status
次のコマンドを実行して、ゲートウェイを経由する 2 番目のサブネット (
192.168.0.0
) へのルートを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli connection modify <interface_name> +ipv4.routes "192.168.0.0/24 via <gateway>"
# nmcli connection modify <interface_name> +ipv4.routes "192.168.0.0/24 via <gateway>"
<interface_name>
をインターフェイス名に置き換えます。<gateway>
を実際のゲートウェイの IP アドレスに置き換えます。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli connection modify eth0 +ipv4.routes "192.168.0.0/24 via 192.168.0.1"
# nmcli connection modify eth0 +ipv4.routes "192.168.0.0/24 via 192.168.0.1"
次のコマンドを実行して変更を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli connection up <interface_name>
# nmcli connection up <interface_name>
<interface_name>
をインターフェイス名に置き換えます。ルーティングテーブルを検証して、ルートが正常に追加されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ip route
# ip route
1 番目のサブネットの各コントロールプレーンノードに対して前の手順を繰り返します。
注記コマンドは、実際のインターフェイス名とゲートウェイに合わせて調整してください。
1 番目のサブネットと通信するように 2 番目のサブネットを設定します。
次のコマンドを実行して、リモートコンピュートノードに
root
としてログインします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo su -
$ sudo su -
次のコマンドを実行して、ネットワークインターフェイスの名前を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli dev status
# nmcli dev status
次のコマンドを実行して、ゲートウェイを経由する最初のサブネット (
10.0.0.0
) へのルートを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli connection modify <interface_name> +ipv4.routes "10.0.0.0/24 via <gateway>"
# nmcli connection modify <interface_name> +ipv4.routes "10.0.0.0/24 via <gateway>"
<interface_name>
をインターフェイス名に置き換えます。<gateway>
を実際のゲートウェイの IP アドレスに置き換えます。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 via 10.0.0.1"
# nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 via 10.0.0.1"
次のコマンドを実行して変更を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmcli connection up <interface_name>
# nmcli connection up <interface_name>
<interface_name>
をインターフェイス名に置き換えます。次のコマンドを実行して、ルーティングテーブルを検証し、ルートが正常に追加されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ip route
# ip route
2 番目のサブネット内の各コンピュートノードに対して、上記の手順を繰り返します。
注記コマンドは、実際のインターフェイス名とゲートウェイに合わせて調整してください。
ネットワークを設定したら、接続をテストして、リモートノードがコントロールプレーンノードに到達できること、およびコントロールプレーンノードがリモートノードに到達できることを確認します。
1 番目のサブネットのコントロールプレーンノードから、次のコマンドを実行して、2 番目のサブネットのリモートノードに ping を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ping <remote_node_ip_address>
$ ping <remote_node_ip_address>
ping が成功した場合は、1 番目のサブネットのコントロールプレーンノードが 2 番目のサブネットのリモートノードに到達できています。応答がない場合は、ネットワーク設定を確認し、ノードに対して手順を繰り返します。
2 番目のサブネットのリモートノードから、次のコマンドを実行して、1 番目のサブネットのコントロールプレーンノードに ping を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ping <control_plane_node_ip_address>
$ ping <control_plane_node_ip_address>
ping が成功した場合は、2 番目のサブネットのリモートコンピュートノードが 1 番目のサブネットのコントロールプレーンに到達できています。応答がない場合は、ネットワーク設定を確認し、ノードに対して手順を繰り返します。