Terway Edge は、コンテナにアンダーレイネットワークを提供します。コンテナはルーターやスイッチを介して相互に通信できます。Terway Edge は、効率的でスケーラブル、かつ安定したネットワークをコンテナに提供します。このトピックでは、Terway Edge を使用して、複雑なオンプレミスネットワーク環境でコンテナ間の通信を実装する方法について説明します。
前提条件
課金
エッジコンテナ間の通信
エッジ通信は、コンピューティングデバイス、コンテナ、クラウド上のクラウドサービスとエッジ上のデバイスとの間の双方向通信を提供します。ACK Edge クラスターを使用して、クラウド上のデバイスとエッジデバイス間の通信を確立できます。
クラウド上のデバイスとは、Elastic Compute Service (ECS) インスタンスや Elastic Container Instance などのクラウド上のノードプール、その他のクラウドサービス、および VPC (Virtual Private Cloud) 内のマネージドコントロールプレーンを指します。
エッジデバイスとは、オンプレミスネットワークデバイスや自己管理データセンター内のコンピューティングデバイスなどのエッジノードプールを指します。
次の図は、エッジコンテナ間の通信を示しています。
タイプ | CIDR ブロック |
クラウド上のデバイス | VPC CIDR ブロック:192.168.0.0/16 |
エッジデータセンター | ホスト CIDR ブロック:10.0.0.0/16 コンテナ CIDR ブロック:10.10.0.0/16。ACK Edge クラスターの作成時に、コンテナにカスタム CIDR ブロックを設定できます。 |
前提条件
VPC、Cloud Enterprise Network (CEN)、Virtual Border Router (VBR)、および Express Connect 回線が作成されていること。
VPC とオンプレミスデータセンターを接続するための Transit Router (TR) が CEN に作成されていること。VBR と VPC は TR にアタッチされています。
設定方法
ステップ 1:アップリンク ルートの設定 (エッジデータセンターからクラウド上の VPC へのアクセス経路)
データセンターのコアスイッチで、VPC CIDR ブロック (
192.168.0.0/16) のネクストホップを VBR に設定します。説明上位レベルにスイッチまたはボーダーゲートウェイも利用可能な場合は、ルーティングルールを統一して設定します。これにより、VPC (
192.168.0.0/16) に転送されるパケットは、Express Connect 回線を介して直接 VBR に転送できます。VPC CIDR ブロック
(192.168.0.0/16) のネクストホップを TR に設定します。TR のルートテーブルで、VPC CIDR ブロック (
192.168.0.0/16) のネクストホップをクラウド上の VPC に設定します。
ステップ 2:ダウンリンク ルートの設定 (クラウド上の VPC からエッジデータセンターへのアクセス経路)
VPC ルートテーブルで、データセンターのホスト CIDR ブロック (
10.0.0.0/16) とコンテナ CIDR ブロック (10.10.0.0/16) のネクストホップを TR に設定します。TR のルートテーブルで、データセンターのホスト CIDR ブロック (
10.0.0.0/16) とコンテナ CIDR ブロック (10.10.0.0/16) のネクストホップを VBR に設定します。VBR 上で、データセンターのホスト CIDR ブロック (
10.0.0.0/16) とコンテナ CIDR ブロック (10.10.0.0/16) のネクストホップをコアスイッチに設定します。パケットは Express Connect 回線を介して転送されます。
ステップ 3:クラスター内のノードに対する BGP 公開ルートの設定
アップストリームとダウンストリームのルートが設定されると、クラウド上の VPC とデータセンターのホスト間の通信が確立されます。現在のネットワーク設定に基づくと、コンテナネットワークのパケットがオンプレミスデータセンターのコアスイッチに到達したとき、スイッチにコンテナのルートがないため、パケットはそれ以上転送できません。クラスターに Border Gateway Protocol (BGP) ピアを設定して、特定のノードが BGP プロトコルを介してデータセンターのコアスイッチに Pod IP ルートを公開できるようにする必要があります。詳細については、「Terway Edge の使用ガイド」をご参照ください。
上の図では、Node-1、Node-2、および Node-3 が BGP スピーカーとして設定され、データセンターのコアスイッチに接続されているすべてのノードの Pod ネットワークを公開し、スイッチに属するすべてのノードに ASN=65010 ラベルを追加します。詳細については、次の YAML マニフェストをご参照ください。
apiVersion: network.openyurt.io/v1alpha1
kind: BGPPeer
metadata:
name: peer
spec:
localSpeakers:
- Node-1
- Node-2
- Node-3
localAsNumber: 65010 # コンテナネットワークの自律ドメインの ID。
peerIP: 10.0.0.1 # スイッチの IP アドレス。
peerAsNumber: 65001 # スイッチの自律ドメインの ID。
nodeSelector: ASN=65010 # このラベルを持つすべてのノードを選択します。クラスター内の少なくとも 3 つのノードを BGP スピーカーとして指定することを推奨します。これにより、高可用性が提供され、アドオンのアップグレード中に BGP セッションが維持されるため、Pod ルートのエージングアウトによるネットワークの中断を防ぐことができます。
ステップ 4:スイッチが BGP 公開ルートを受け入れるように設定
ご利用のネットワークデバイスで BGP サービスを有効にします。その際、デバイスのモデルに応じた特定のコマンドと設定方法に従ってください。
ネットワークデバイス上で、
Node-1、Node-2、およびNode-3を BGP ピアとして設定します。設定後、BGP セッションが正常に確立されたことを確認します。BGP グレースフルリスタートを、少なくとも 300 秒の再起動タイマーで設定することを推奨します。これにより、BGP セッションが予期せず切断された場合にルーティング情報が保持され、ネットワークの中断を防ぐことができます。
ステップ 5:スイッチの確認
データセンターのコアスイッチで、BGP セッションのステータスを確認し、ルーティングテーブルを検査します。Pod サブネットへのルートが学習されたことを確認します。たとえば、10.10.0.0/24 へのルートが、対応するノードの IP (10.0.0.10) 経由で学習されていることを確認します。
LAN をまたぐコンテナ間の通信
データセンターのネットワークトポロジーが複雑で、同じドメインに複数のローカルエリアネットワーク (LAN) がデプロイされている場合は、複数の LAN 上のデバイスを 1 つの ACK Edge クラスターに接続して一元管理する必要があります。例として次の図をご参照ください。
同じノード上のコンテナは、ホストネットワークスタックを介して相互に通信します。
次のセクションでは、ノードをまたぐコンテナ間の通信のための Terway Edge プラグインのルート設定について説明します。
2 つのノードが同じ LAN にあり、同じ自律システム番号 (ASN) を使用する場合、コンテナルートのネクストホップは対応するノードアドレスに設定されます。
2 つのノードが異なる LAN にあり、異なる ASN を使用する場合、ホストのデフォルトルートが使用され、これはスイッチアドレスを指します。
同じ LAN 上の 2 つのノード
2 つのノードが同じ LAN にあるシナリオでは、ノードはレイヤー 2 ネットワーク上で相互に通信します。上の図では、Node-1 上の Pod が Node-2 上の Pod にアクセスします。コンテナネットワークのパケットはレイヤー 2 ネットワークを通過して Node-2 に到達し、その後 Node-2 のホストネットワークスタックを介して Pod に入ります。
異なる LAN 上の 2 つのノード
2 つのノードが異なる LAN にあるシナリオでは、ノード間のレイヤー 2 ネットワークは相互に通信しません。したがって、スイッチのレイヤー 3 転送機能を使用する必要があります。スムーズなネットワーク接続を確保するために BGP セッションを設定します。上の図では、Node-1 上の Pod が Node-5 上の Pod にアクセスします。この例は、コンテナルートをクラスター外のネットワークデバイスに公開する方法を示しています。この例では、次の設定が使用されます。
Node-1とスイッチ Aの間に BGP セッションを確立し、LAN Aのコンテナルートをスイッチ Aに公開します。YAML ファイルの例:apiVersion: network.openyurt.io/v1alpha1 kind: BGPPeer metadata: name: peer-a spec: localSpeakers: - Node-1 localAsNumber: 65010 # コンテナネットワークの自律ドメインの ID。 peerIP: 10.0.10.1 # スイッチの IP アドレス。 peerAsNumber: 65002 # スイッチの自律ドメインの ID。 nodeSelector: ASN=65010 # このラベルを持つすべてのノードを選択します。Node-5とスイッチ Bの間に BGP セッションを構築し、LAN Bのコンテナルートをスイッチ Bに公開します。YAML ファイルの例:apiVersion: network.openyurt.io/v1alpha1 kind: BGPPeer metadata: name: peer-b spec: localSpeakers: - Node-5 localAsNumber: 65020 # コンテナネットワークの自律ドメインの ID。 peerIP: 10.0.20.1 # スイッチの IP アドレス。 peerAsNumber: 65003 # スイッチの自律ドメインの ID。 nodeSelector: ASN=65020 # このラベルを持つすべてのノードを選択します。スイッチ Aとスイッチ Bの間に BGP セッションを確立します。これにより、スイッチ Aとスイッチ Bは互いのコンテナルートを学習できます。パケット送信ルート:
Node-1->スイッチ A->スイッチ B->Node-5パケット受信ルート:
Node-5->スイッチ B->スイッチ A->Node-1
(オプション) 次の図に示すように、ネットワークデバイスにクラウド上の VPC のホストとコンテナを接続するコアスイッチがある場合は、
スイッチ A、コアスイッチ、およびスイッチ Bの間で BGP セッションを確立する必要があります。スイッチ Aとコアスイッチの間に BGP セッションを確立し、スイッチ Bとコアスイッチの間に BGP セッションを確立します。
ドメインをまたぐコンテナ間の通信
次の例は、異なるネットワークドメインのデータセンターを ACK Edge クラスターに接続する方法を示しています。
次の YAML コードは、BGP セッションを作成してネットワークドメイン A のコンテナから
スイッチ Aにルートを公開する方法の例を示しています。apiVersion: network.openyurt.io/v1alpha1 kind: BGPPeer metadata: name: peer-a spec: localSpeakers: - Node-1 localAsNumber: 65010 # コンテナネットワークの自律ドメインの ID。 peerIP: 10.0.10.1 # スイッチの IP アドレス。 peerAsNumber: 65001 # スイッチの自律ドメインの ID。 nodeSelector: ASN=65010 # このラベルを持つすべてのノードを選択します。次の YAML コードは、BGP セッションを作成してネットワークドメイン B のコンテナから
スイッチ Bにルートを公開する方法の例を示しています。apiVersion: network.openyurt.io/v1alpha1 kind: BGPPeer metadata: name: peer-b spec: localSpeakers: - Node-5 localAsNumber: 65020 # コンテナネットワークの自律ドメインの ID。 peerIP: 10.0.20.1 # スイッチの IP アドレス。 peerAsNumber: 65002 # スイッチの自律ドメインの ID。 nodeSelector: ASN=65020 # このラベルを持つすべてのノードを選択します。異なるデータセンターを接続します。
2 つのデータセンターが Express Connect 回線を介してネットワークレイヤーで相互に通信する場合、
スイッチ Aとスイッチ Bの間に BGP セッションを確立して、それぞれのネットワークドメインのコンテナルートを相互に公開する必要があります。2 つのデータセンターが Express Connect 回線を介してネットワークレイヤーで相互に通信しない場合、
スイッチ Aと VBR の間、およびスイッチ Bと VBR の間に BGP プロトコルを確立する必要があります。これにより、VBR を使用してクロスドメインのネットワークパケットを転送できます。