Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SR-IOVベースのワークロード向けCN2 Apstra統合

概要 このトピックでは、ジュニパー®クラウドネイティブContrail Networkingの仮想ネットワークを、SR-IOV対応ネットワークのApstra管理ファブリックに拡張する方法について説明します。ジュニパーネットワークスは、Kubernetes オーケストレーション環境で Contrail Networking リリース 22.4 以降を使用して、この統合機能をサポートしています。

概要

サーバー上の SR-IOV 対応 NIC を使用して、効率的な I/O 仮想化を実現します。SR-IOV 技術により、物理 NIC を複数の仮想機能に分割できます。これらの仮想NICまたは仮想機能は、vRouterを通過するのではなく、パケットを直接送受信できます。SR-IOV サーバー上にワークロードを作成し、仮想機能をポッドにアタッチすると、ワークロードはファブリック アンダーレイを直接使用します。

Juniper Apstraを使用してファブリックをプロビジョニングし、SR-IOVワークロードに必要なアンダーレイ接続を提供します。Apstraは、データセンターネットワークの設計、導入、運用を自動化および検証する、ジュニパーのインテントベースネットワーク構築ソフトウェアです。CN2とApstraソフトウェアを統合して、SR-IOVポッドのファブリックアンダーレイをプロビジョニングできます。

メモ:

ドキュメント内の プライマリノード を参照してください。Kubernetes は マスター ノードを指します。Kubernetes の用語におけるマスター ノードと相互に関連付けるプライマリ ノードに関するこのガイドで参照されています。

例:CN2 Kubernetesの導入

図1 は、CN2 Kubernetesの導入例を示しています。この導入では、Apstraを使用して、SR-IOVポッドのファブリックアンダーレイをプロビジョニングします。 表 1 では、さまざまなコンポーネントについて説明します。

図 1:CN2 Kubernetes の導入 CN2 Kubernetes Deployment
表1:CN2 Apstraコンポーネント
コンポーネント の説明
SR-IOV ワーカー ノード SR-IOV ワーカー ノードは、ファブリック内のリーフ デバイスに接続します。これらのノードは、CN2クラスターの一部であり、仮想機能に分割してポッドに接続できるSR-IOV対応NICを備えています。SR-IOVワーカーノードでポッドを作成すると、ポッドのインターフェイスがSR-IOV対応NIC上の仮想機能に接続されます。
CN2 Apstraプラグイン CN2 Apstraプラグインは、仮想ネットワークをファブリックに拡張します。このプラグインは、NADの作成、ポッドの仮想ネットワークへの接続、仮想ネットワークルーター(VNR)の作成などのCN2 Kubernetesイベントをリッスンします。プラグインは次に、Apstraを介してアンダーレイのファブリックを設定します。
Apstra Apstraは、SR-IOVポッドに必要なアンダーレイ接続を提供するためにファブリックをプロビジョニングします。Apstraは、どのリーフポートがどのワーカーノードに接続されているかに関するトポロジー情報も提供します。CN2 Apstraプラグインは、この情報を使用して仮想ネットワークメンバーシップを設定します。このプラグインは、SR-IOV ポッドが生成されるワーカー ノードに基づいて、関連するファブリック ポートのメンバーシップを設定します。

前提 条件

CN2 Apstra設定でSR-IOVデバイスを設定する前に、以下をインストールする必要があります。

  • Apstraソフトウェア4.0以上

  • SR-IOV対応NICを備えたワーカーノードを持つCN2クラスター

  • 次のCN2コンテナネットワークインターフェイス(CNI)プラグイン:

    • Multusプラグイン

    • SR-IOV ネットワーク デバイス プラグイン

    • CN2 Apstraプラグイン

    • CN2 IPAMプラグイン

  • トポロジーで使用しているスイッチのライセンス

    ジュニパーのQFXスイッチには、高度な機能に対するソフトウェアライセンスが必要です。ファブリックに必要なライセンスがあることを確認するには、 ジュニパーネットワークスライセンスガイドを参照してください。

    メモ:

    インストールワークフローステップ4で説明されているように、ファブリックをApstraのブループリントにオンボードしてください。

考慮 事項

インストールを開始する前に、以下の考慮事項の一覧を参照してください。

  • この機能は以下を想定しています。

    • CN2単一クラスターの導入

    • SR-IOVポッド間の通信

    • SR-IOVポッド間のVNI内およびVNI間通信の基本的な使用事例。ハブアンドスポーク型ルーティングなど、その他の形式のルーティングはサポートされていません。

  • この機能は、SR-IOV ワーカー ノードを 1 つのリーフ デバイスにのみ接続する、シンプルなスパイン リーフ トポロジーを想定しています。SR-IOVワーカーノードが複数のリーフポートに接続されている場合、このSR-IOVワーカーノードが接続されているすべてのリーフデバイス上のすべてのリーフポートを設定します。

  • CN2では、VNI間ルーティング用にポッド上のルートを手動で設定する必要があります。例えば、 コマンド ip route add 10.30.30.0/8 via 10.20.20.1 を使用して他の仮想ネットワークに到達することができます。

  • 重複するIPと接合されたインターフェイスは使用されていません。

  • IPv4アドレスのみが使用されています。

インストールワークフロー

CN2 Apstraプラグインとその前提条件をインストールして設定するには、この手順の手順に従います。

  1. Apstraソフトウェアをインストールします。

    Apstraソフトウェア4.0以上をインストールして設定します。 Juniper Apstraのインストールおよびアップグレードガイドを参照してください。

    既存のデータセンターネットワークを使用している場合、Apstraはすでにファブリックを管理しています。ブループリントには、ASNやループバックIPアドレスなど、必要なリソースプールを割り当てるようにしてください。

  2. CN2クラスタをインストールします。

    Kubernetesワーカーノードを含むCN2クラスターをインストールして設定します。手順については、 アップストリームKubernetes向けCN2インストールガイド または OpenShiftコンテナプラットフォーム用CN2インストールガイドの「インストール」 セクションを参照してください。

  3. プラグインをインストールします。

    1. Multusプラグイン:

      このプラグインを使用すると、複数のネットワークインターフェイスをポッドにアタッチできます。インストール手順については、 Kubernetesの場合は Multus CNIOpenShiftについては Multus CNI を参照してください。

    2. SR-IOV ネットワーク デバイス プラグイン:

      このプラグインは、Kubernetes ホスト上の SR-IOV 仮想機能のネットワーク リソースを検出およびアドバタイズします。手順については、 Kubernetes用SR-IOVネットワークデバイスプラグイン または SR-IOVネットワークデバイスプラグインを参照 してください。

    3. CN2 Apstraプラグイン:

      このプラグインは、CN2導入者の一部としてインストールされています。プラグイン をインストールするには、 CN2 Apstraプラグインのインストールと設定 を参照してください。

    4. CN2 IPAMプラグイン:

      このプラグインは、ポッドに IP アドレスを割り当てます。このプラグインは、SR-IOV ノードにインストールします。プラグイン をインストールするには、 CN2 IPAMプラグイン のインストールを参照してください。

  4. Apstraのファブリックをオンボードします。

    Apstra Web GUIからApstraのファブリックをオンボードしましたオンボーディング手順については、 Juniper Apstraユーザーガイド.を参照してください。

    • 必ず、ASN やループバック IP アドレスなどの必要なリソース プールをブループリントに割り当てます。

    • Apstraブループリントの汎用システム(つまりサーバー)のホスト名が、対応するCN2ノードのホスト名と一致するようにしてください。また、ワーカー ノード上の SRIOV 対応 NIC をファブリック ポートに接続する SR-IOV リンクにタグを付ける必要があります。プラグインをインストールするときに、CN2 ApstraプラグインCRDにこの同じ値 sriov_link_tag を入力します。次の図は、一般的なシステムのホスト名がCN2ワーカーノードの対応するホスト名と一致するように編集されたApstraブループリントのトポロジーの例を示しています。図は、前述の SR-IOV リンク用に設定された SRIOV タグも示しています。

  5. インストールを確認します。

    インストラクションについては、 インストールの確認 を参照してください。

CN2 Apstraプラグインのインストールと設定

このセクションでは、CN2 Apstraプラグインをインストールおよび設定する方法について説明します。

CN2 Apstraプラグインは、導入者の一部としてインストールされます。CN2 Apstraプラグインは、仮想ネットワークをファブリックに拡張し、CN2 Kubernetesイベント(NADの作成など)をリッスンし、Apstra SDKを介してアンダーレイ用のファブリックを設定します。

インストールに応じて、以下のファイルを使用してプラグインをインストールおよび設定します。

  • Kubernetes の場合は、ファイルを使用します single_cluster_deployer_example.yaml

  • OpenShift では、ディレクトリ構造でディレクトリ内 ocp/plugins のすべてのファイルを 1 つのレベルアップにコピーします。

CN2 Apstraプラグインをインストールして設定するには、次の手順にしたがっています。

  1. ファイル内と contrail-apstra-pluginapstra-plugin-secretコメントを解除しますsingle_cluster_deployer_example.yaml

  2. 対応する deployer ファイルのセクションに apstra-plugin-secret 資格情報(ユーザー名とパスワード)を入力します。資格情報が base64 エンコードされていることを確認します。

    例えば:

  3. 次の例に示すように、 contrail-apstra-plugin の パラメータblueprint name, server_ip, sriov_link tagを 入力します。のパラメータsriov_link tagが、Apstraソフトウェアで指定したパラメータと同じであることを確認します。

    この例では、画像を取得する contrail-apstra-plugin 場所からの画像 URL も表示します。必要に応じて、画像の URL を編集できます。例えば、画像内の 値を release_numberR22.4-5変更することができます。

    各フィールドの意味を理解するために、 コマンドを実行してください kubectl explain apstraplugin.spec

    メモ:

    以下の例は情報提供のみを目的としています。このコマンドは、CN2 Apstraプラグインを導入した後にのみ実行できます。

上記の手順では、CN2 Apstraプラグインをインストールするために導入者に必要な変更を行いました。 アップストリームKubernetes向けCN2インストールガイドまたはOpenShiftコンテナプラットフォーム向けCN2インストールガイド のインストラクションに従って 、CN2のインストールを進めることができます。

メモ:

CN2のインストールが完了した後でも、上記の手順で説明したようにデプロイしているYAMLでCN2 Apstraプラグインパラメーターを編集してから、CN2を再インストールすることもできます。

インストールの確認

以下 kubectl のコマンドを実行して、インストールが稼働していることを確認します。例えば:

CN2 IPAMプラグインをインストールする

この手順に従って、KubernetesとOpenShiftの両方の導入にCN2 IPAMプラグインをインストールします。この手順では、CN2がすでにKubernetesクラスタにインストールされていることを前提としています。この手順では、単一クラスタの導入を示します。

CN2 IPAMプラグインをインストールして設定するには、次の手順にしたがっています。

  1. コマンドをkubectl get nodes実行して、使用可能なノードのリストを表示します。
  2. SR-IOV 対応 NIC を持つ各ワーカー ノードのラベルsriov:"true"を追加します。例えば:
  3. CRD にsriovLabelSelector追加しますcontrail-vrouters-nodes
    CRDの[spec]フィールドに、以下の情報を追加します。
  4. プラグインのインストールを確認します。

    vRouterポッドがマスターノードで再起動されるまで待ちます。次の例に cn2-ipam示すように、および sriov バイナリがインストールされていることを確認します。

    メモ:

    バイナリ ファイルの既定の場所は、Kubernetes または OpenShift のどちらを使用するかによって異なります。

    • Kubernetes の場合、バイナリはディレクトリに /opt/cni/bin/ 存在します。

    • OpenShift の場合、バイナリはディレクトリに /var/lib/cni/bin/ 存在します。

SR-IOV の使用事例

このセクションでは、VNI内トポロジーとVNI間トポロジーにおけるSR-IOVのユースケースの例を示します。

VNI内:同じ仮想ネットワークに属するポッド

このVNI内のユースケースでは、ポッドは同じ仮想ネットワークに接続されています。デフォルトでは、同じ仮想ネットワークに接続されたポッドは、以下のかどうかにかかわらず、相互に通信できます。

  • ポッドは、同じ SR-IOV ワーカー ノードまたは異なる SR-IOV ワーカー ノードで生成されます。

    または

  • SR-IOV ワーカー ノードは、同じリーフ デバイスまたは別のリーフ デバイスに接続されます。

図2 は、VNI内トポロジーの例を示しています。このスパイン リーフ トポロジーは、2 つの SR-IOV ワーカー ノードを示しています。各ノードには、SR-IOV が有効になっている物理 NIC があります。これらの物理NIC(ens801f2およびens801f3)は仮想機能に分割し、直接入出力(I/O)のためにポッドに接続できます。パケットがこれらの仮想機能を移動すると、パケットは正しいVLANでタグ付けされます。この例では、各ポッドは同じ仮想ネットワークに属しています。このユースケースでは、パケットはvRouterを通過しません。代わりに、パケットはApstraによってプロビジョニングされたファブリックアンダーレイに直接送信されます。

図 2:例:VNI 内トポロジー
Intra-VNI: Pods That Belong to the Same Virtual Network

VNI間ルーティング:異なる仮想ネットワークに属するポッド

図 3. は、VNI間トポロジーの例を示しています。このトポロジーでは、トポロジー内のポッドは 2 つの異なる仮想ネットワークに属します。これらのネットワーク間のルーティングを有効にするには、CN2でVNR(仮想ネットワークルーター)を作成する必要があります。手順については、 VNI間ポッド通信の設定を参照してください。

メモ:

VNI間トポロジーで使用するためにサポートされているジュニパーデバイスの一覧については、 EVPN-VXLANトポロジーにおけるレイヤー3接続を参照してください。また、QFX デバイスで Junos OS バージョン 20.2R2.11 以上が動作していることを確認します。

図 3:例:VNI 間トポロジー
Inter-VNI Routing: Pods That Belong to Different Virtual Networks

VNI内ポッド通信を設定する

同じ仮想ネットワーク上にあるポッド間の通信を設定するには、次の手順に従います。

VNI内ポッド通信を設定するには:

  1. (NAD)オブジェクトをNetworkAttachmentDefinition作成して、ポッドを仮想ネットワークにアタッチします。
    以下の例は、NAD の NetworkAttachmentDefinition.yaml 作成に使用するファイルを示しています。
    この例では、Apstraプラグインを使用して、CN2仮想ネットワークをファブリックに拡張するラベル juniper.net/plugin: apstra を使用しています。OpenShift クラスターには、同じ NAD 定義を使用できます。
    このオブジェクトを作成すると、CN2 ApstraプラグインがNADをリッスンし、Apstraを VirtualNetwork 介してファブリックにまで拡張します。
  2. コマンドをkubectl apply -f sriov_net20_nad.yaml実行して NAD を作成します。
  3. 以下のコマンドを実行して、NAD が作成されたことを確認します。
    NADが作成されると、CN2 Apstraプラグインが変更をリッスンし、Apstra SDKを使用してファブリックをプロビジョニングします。
  4. 次に、ファイルを作成しますPod.yaml。例えば:
    仮想関数のリソース名 ( sriov-net20) に加えて 、ステップ 1 で作成した NAD ( intel.com/intel_sriov_netdevice) も参照しています。
  5. 最後に、 コマンドをkubectl apply -f pod.yaml実行してポッドを作成します。
    ポッドを作成すると、CN2 Apstraプラグインはポッド作成イベントをリッスンし、関連するファブリックポートを. に割り当てるためにファブリックをプロビジョニングします VirtualNetwork
これで、同じ仮想ネットワーク上のポッド間の通信が設定されました。

VNI間ポッド間通信を設定する

異なる仮想ネットワークに属するポッド間の通信を設定するには、次の手順に従います。

VNI間ポッド間通信を設定するには:

  1. NADオブジェクトを作成して、ポッドを仮想ネットワークにアタッチします。OpenShift クラスターにも同じ NAD 定義を使用できます。
  2. コマンドをkubectl apply -f sriov_net30_nad.yaml実行して NAD を作成します。
  3. 以下のコマンドを実行して、NAD が作成されたことを確認します。
    NADを作成すると、CN2 ApstraプラグインがNADイベントをリッスンし、Apstraを VirtualNetwork 介してファブリックまで拡張します。同じパターンに従って、必要に応じて追加の NAD を作成できます。
  4. Pod.yaml異なる仮想ネットワークにポッドをアタッチするファイルを作成します。例えば:

    仮想関数のリソース名(sriov-net30)に加えて 、ステップ 1 で作成された NAD(intel.com/intel_sriov_netdevice)も参照しています。

  5. コマンドをkubectl apply -f pod.yaml実行してポッドを作成します。
    ポッドを作成すると、CN2 Apstraプラグインはポッド作成イベントをリッスンし、関連するファブリックポートを. に割り当てるためにファブリックをプロビジョニングします VirtualNetwork
  6. 共通のラベルを使用VirtualNetworkRouter.yamlして異なる仮想ネットワークをルーティングするファイルを作成します。この例では、使用されている一般的なラベルは 次のとおりですweb
  7. 最後に、VNI間ルーティング用に各ポッドでゲートウェイを手動で設定します。
    たとえば、Ubuntu では、 コマンド ip route add 10.20.20.0/24 via 10.30.30.1 を使用してゲートウェイを構成できます。
これで、異なる仮想ネットワークに属するポッド間の通信が設定されました。