マルチスCNIプラグインを使用したOKEへのSR-IOV対応ネットワーク・インタフェース・コンテナ・アプリケーションのデプロイ

はじめに

このチュートリアルでは、高度なネットワーキング機能を活用して、Oracle Cloud Infrastructure Kubernetes Engine (OKE)内の仮想インスタンス・ワーカー・ノードにコンテナ化されたアプリケーションをデプロイする方法を説明します。具体的には、コンテナ・ネットワーク・インタフェースに対してシングル・ルートI/O仮想化(SR-IOV)を有効にし、マルチ・ホーム・ネットワーキングをコンテナに対して有効にするようにマルチ・ルートCNIプラグインを構成します。

SR-IOVとMultusを組み合わせることで、AI、機械学習、リアルタイム・データ処理などの特殊なワークロード向けに、高パフォーマンスで低レイテンシのネットワーキングを実現できます。このチュートリアルでは、OKE環境の構成、SR-IOV対応インタフェースを使用したワーカー・ノードのデプロイ、およびマルチスCNIを使用したポッド内の複数のネットワーク・インタフェースの管理の手順を説明します。高速パケット処理を目指す場合でも、Kubernetesネットワーキングを微調整する必要がある場合でも、このチュートリアルでは、開始するためのツールと知識を提供します。

ノート:

イメージ

目的

タスク1: 要塞、オペレータ、3つのVMワーカー・ノードおよびFlannel CNIプラグインを使用したOKEのデプロイ

次の設定でOKEがデプロイされていることを確認します。

この設定の詳細は、次のチュートリアルを参照してください: Oracle Cloud Infrastructure Kubernetes Engineを使用したTerraformを使用したKubernetesクラスタのデプロイ

次のイメージは、このチュートリアル全体で使用するコンポーネントの概要を示しています。

イメージ

タスク2: 各ワーカー・ノードでのSR-IOV (ハードウェア支援)ネットワーキングの有効化

ノート:次のステップは、OKEクラスタの一部であるすべてのワーカー・ノードで実行する必要があります。

次の図は、このチュートリアル全体で使用するOKEクラスタ内のワーカー・ノードの概要を示しています。

イメージ

インスタンスでのSR-IOVの有効化

タスク3: SR-IOV対応VNICの新しいサブネットの作成

SR-IOV対応のインタフェースが使用する専用のサブネットを作成します。

タスク3.1: セキュリティ・リストの作成

すでに他のサブネットにセキュリティ・リストを使用しているため、新しく作成されたSR-IOVサブネット専用のセキュリティ・リストも必要です。

タスク3.2: サブネットの作成

タスク4: 2番目のVNICアタッチメントの追加

次の図は、2番目のVNICを追加する前にワーカー・ノード・サブネットに接続された単一のVNICがワーカー・ノードにどのように存在するかの視覚的な概要を示しています。

イメージ

2番目のVNICアタッチメントをワーカー・ノードに追加する前に、ネットワーク・セキュリティ・グループを作成します。

タスク4.1: ネットワーク・セキュリティ・グループ(NSG)の作成

すでに他のVNICにNSGを使用していますが、OKEクラスタの一部であり、Kubernetesワーカー・ノードとして役割を果たす既存の仮想インスタンスに追加する、新しく作成されたVNICの専用NSGも必要です。このインタフェースは、SR-IOVが有効になっている VNICになります。

タスク4.2: VNICの追加

タスク5: デフォルト・ゲートウェイを使用した新しい2番目のVNICへのIPアドレスの割当て

タスク4で2番目のVNICが作成され、アタッチされたので、それにIPアドレスを割り当てる必要があります。2番目のインタフェースをインスタンスに追加する場合、最初のインタフェースと同じサブネットに割り当てるか、新しいサブネットを選択できます。

2番目のインタフェースではDHCPが有効になっていないため、IPアドレスを手動で割り当てる必要があります。

2番目のインタフェースにIPアドレスを割り当てるには、さまざまな方法があります。

すべてのワーカー・ノードについて、セカンダリvNIC (ens5)にIPアドレスを割り当てました。方法3を使用して、セカンダリvNIC (ens5)にIPアドレスを割り当てました。2番目のVNICへのIPアドレスの割当ての詳細は、「Oracle Linuxインスタンスの2番目のインタフェースへのIPアドレスの割当て」を参照してください。

IPアドレスが VNICに割り当てられたら、2番目のVNICのIPアドレスが正しく構成されているかどうかを確認する必要があります。また、すべてのノード・プール・ワーカー・ノードでSR-IOVを有効にしたかどうかを確認することもできます。

OKEクラスタは次のもので構成されます。

ノード・プール  
NP1 1 xワーカー・ノード
NP2 3 xワーカー・ノード

すべてのノード・プール内のすべてのワーカー・ノードを確認します。

タスク5.1: ノード・プール1のすべてのノードの確認(np1)

タスク5.2: ノード・プール2のすべてのノードの確認(np2)

タスク6: ワーカー・ノードへのメタプラグインCNI (マルチCNI)のインストール

Multus CNIは、複数のネットワーク・インタフェースをポッドにアタッチできるKubernetesのコンテナ・ネットワーク・インタフェース(CNI)プラグインです。

マルチスCNIの仕組み

マルチCNIが必要な理由

タスク6.1: シン・インストール方法を使用したマルチスCNIのインストール

Multusデーモン設定の動作

タスク6.2: マルチ・インストールの検証

タスク7: ポッドへのネットワーク・インタフェースのアタッチ

このタスクでは、このVNICにコンテナ・インタフェースをマップまたはアタッチします。

ポッドに追加のインタフェースをアタッチするには、インタフェースをアタッチするための構成が必要です。

これを実現するためにMultusとともに使用できるCNIプラグインがいくつかあります。詳細は、プラグインの概要を参照してください。

次の例は、ノードに追加されたセカンダリens5インタフェースを構成するNetworkAttachmentDefinitionオブジェクトを示しています。

タスク7.1: ネットワーク添付定義の作成

NetworkAttachmentDefinitionは、ポッドのセカンダリ・インタフェースなど、ネットワーク・アタッチメントの設定に使用されます。

NetworkAttachmentDefinitionを構成するには、2つの方法があります。

ノート:このチュートリアルでは、CNI構成ファイルを使用してメソッドを使用します。

4つのxワーカー・ノードがあり、各ワーカー・ノードには、コンテナ(ポッド)上のインタフェースにマップする2番目のVNICがあります。

タスク7.2: NetworkDefinitionAttachmentがアタッチされたポッドの作成

このタスクでは、NetworkAttachmentDefinitionsを実際のコンテナまたはポッドに関連付けます。

次の表では、どのポッドをどのワーカー・ノードにホストするかについてのマッピングを作成しました。

ワーカー(プライマリ)ノードIP ens5 name POD名 終了
10.0.112.134 10.0.3.30/27 sriov-vnic-1 testpod1 YES
10.0.66.97 10.0.3.15/27 sriov-vnic-2 testpod2 YES
10.0.73.242 10.0.3.14/27 sriov-vnic-3 testpod3 YES
10.0.89.50 10.0.3.16/27 sriov-vnic-4 testpod4 YES

タスク7.3: ノード・アフィニティを使用したポッドの作成

デフォルトでは、Kubernetesはポッドを配置する場所(ワーカー・ノード)を決定します。この例では、NetworkAttachmentDefinitionがIPアドレスにバインドされ、このIPアドレスがVNICにバインドされ、このVNICが特定のワーカー・ノードにバインドされているため、これはできません。したがって、作成するポッドが目的のワーカー・ノードに終わることを確認する必要があります。これは、NetworkAttachmentDefinitionをポッドにアタッチするときに必要です。

これを行わないと、ポッドでIPアドレスを使用できる別の場所にポッドが立ち上がる可能性があります。したがって、ポッドはSR-IOV対応インタフェースを使用して通信できません。

タスク7.4: テスト・ポッドのIPアドレスの確認

タスク7.5: ワーカー・ノードのIPアドレスの確認

タスク8: 複数のポッド間のPingテストの実行

すべてのポッドには、SR-IOV対応VNICがアタッチされているOCIサブネットからのIPアドレスがあります。いくつかのpingテストを実行して、ネットワーク接続が正常に機能しているかどうかを確認できます。

ノート:この例では、testpod1を使用して、他のすべてのテスト・ポッドnet1 IPアドレスにpingを実行します。

タスク9: (オプション)複数のインタフェースを使用したポッドのデプロイ

これまでは、1つのVNIC(SR-IOVをサポートするため)のみを準備し、このVNICをポッドに移動しました。これは、4つの異なるテスト・ポッドに対して行いました。

では、さらにVNICを特定のポッドに追加または移動する場合はどうでしょうか。次のステップを繰り返す必要があります。

このタスクでは、追加のサブネットVNICを作成し、IPアドレスNetworkAttachmentDefinitionを割り当て、これをtestpod1のポッド作成YAMLファイルに追加する例を示します。

タスク10: すべてのポッド・デプロイメントおよびNetworkAttachmentDefinitionsの削除

NetworkAttachmentDefinitionsを使用してコンテナをやり直す場合、またはクリーン・アップする場合は、次のステップを実行します。

確認

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。