第5章 複数ネットワーク
5.1. 複数ネットワークの使用について リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの OVN-Kubernetes Container Network Interface (CNI) プラグインに加えて、MicroShift Multus CNI を使用して他の CNI プラグインをチェーンすることもできます。MicroShift Multus のインストールおよび使用はオプションです。
5.1.1. MicroShift のセカンダリーネットワーク リンクのコピーリンクがクリップボードにコピーされました!
クラスターのインストール中、設定をカスタマイズしない限り、default の Pod ネットワークはデフォルト値で設定されます。デフォルトのネットワークは、クラスターの通常のネットワークトラフィックをすべて処理します。MicroShift Multus CNI プラグインを使用すると、他のネットワークの Pod に追加のインターフェイスを追加できます。これにより、スイッチングやルーティングなどのネットワーク機能を提供する Pod を設定する際に柔軟性が得られます。
5.1.1.1. ネットワーク分離のためにサポートされているセカンダリーネットワーク リンクのコピーリンクがクリップボードにコピーされました!
MicroShift 4.18 では、次のセカンダリーネットワークがサポートされています。
- Bridge: 同じホスト上の Pod が相互に、またホストと通信できるようにします。
IPVLAN: ホスト上の Pod が他のホストと通信できるようにします。
- これは、MACVLAN ベースのセカンダリーネットワークに似ています。
- MACVLAN ベースのセカンダリーネットワークとは異なり、各 Pod は親の物理ネットワークインターフェイスと同じ MAC アドレスを共有します。
- MACVLAN: ホスト上の Pod が物理ネットワークインターフェイスを使用して他のホストや他のホスト上の Pod と通信できるようにします。MACVLAN ベースのセカンダリーネットワークに割り当てられる各 Pod には固有の MAC アドレスが割り当てられます。
セカンダリーネットワークのネットワークポリシーの設定はサポートされていません。
5.1.1.2. ユースケース: ネットワーク分離のためのセカンダリーネットワーク リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーンとデータプレーンの分離など、ネットワークの分離が必要な状況では、セカンダリーネットワークを使用できます。たとえば、Pod がホスト上のネットワークにアクセスし、エッジにデプロイされたデバイスと通信できるようにする場合は、セカンダリーインターフェイスを設定できます。これらのエッジデバイスは、分離された Operator ネットワーク上にあるか、定期的に切断される可能性があります。
トラフィックの分離は、以下のようなパフォーマンスおよびセキュリティー関連の理由で必要になります。
- パフォーマンス
- 2 つの異なるプレーンでトラフィックを送信して、各プレーンのトラフィック量を管理できます。
- セキュリティー
- 機密トラフィックは、セキュリティー上の考慮に基づいて管理されているネットワークに送信でき、テナントまたはカスタマー間で共有できないプライベートを分離できます。
Multus CNI プラグインは、MicroShift サービスの起動時にデプロイされます。したがって、MicroShift の起動後に microshift-multus
RPM パッケージを追加する場合は、ホストの再起動が必要です。再起動すると、すべてのコンテナーが Multus アノテーション付きで再作成されます。
5.1.1.3. セカンダリーネットワークの実装方法 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのすべての Pod はクラスター全体のデフォルトネットワークを依然として使用し、クラスター全体での接続性を維持します。すべての Pod には、クラスター全体の Pod ネットワークに割り当てられる eth0
インターフェイスがあります。
-
oc get pod <pod_name> -o=jsonpath='{ .metadata.annotations.k8s\.v1\.cni\.cncf\.io/network-status }'
コマンドを使用して、Pod のインターフェイスを表示できます。 -
MicroShift Multus CNI を使用するセカンダリーネットワークインターフェイスを追加すると、
net1
、net2
、…netN
という名前が付けられます。 - CNI 設定は、MicroShift Multus DaemonSet の起動時に作成されます。この設定は自動生成され、デフォルトの委譲であるプライマリー CNI が含まれます。MicroShift の場合、デフォルトの CNI は OVN-Kubernetes です。
5.1.1.4. Pod にセカンダリーネットワークを接続する方法 リンクのコピーリンクがクリップボードにコピーされました!
セカンダリーネットワークインターフェイスを Pod に接続するには、インターフェイスの接続方法を定義する設定を作成して適用する必要があります。
- 使用するセカンダリーネットワークを設定する必要があります。ネットワークにはそれぞれ違いがあるため、デフォルトの設定はありません。
-
NetworkAttachmentDefinition
カスタムリソース (CR) を使用して各インターフェイスを指定するには、YAML マニフェストを適用する必要があります。これらの各 CR 内の設定は、そのインターフェイスがどのように作成されるかを定義します。 CRI-O は Multus を使用するように設定する必要があります。デフォルト設定は
microshift-multus
RPM に含まれています。- Multus CNI が既存の MicroShift インスタンスにインストールされている場合は、ホストを再起動する必要があります。
- Multus CNI が MicroShift と一緒にインストールされている場合は、CR と Pod を追加してから MicroShift サービスを開始できます。このシナリオではホストを再起動する必要はありません。
5.1.1.5. セカンダリーネットワークタイプの設定 リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、セカンダリーネットワーク用の特定の設定フィールドを説明します。
5.1.2. 実行中のクラスターへの Multus CNI プラグインのインストール リンクのコピーリンクがクリップボードにコピーされました!
高性能ネットワーク設定のために Pod に追加のネットワークを接続する場合は、MicroShift Multus RPM パッケージをインストールできます。インストール後、Multus アノテーションを持つすべての Pod を再作成するには、ホストを再起動する必要があります。
Multus CNI プラグインのアンインストールはサポートされていません。
前提条件
- ホストへの root アクセス権限がある。
手順
次のコマンドを実行して、Multus RPM パッケージをインストールします。
sudo dnf install microshift-multus
$ sudo dnf install microshift-multus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントここで追加のネットワーク用のカスタムリソース (CR) を作成すると、1 回の再起動でインストールを完了し、設定を適用できます。
パッケージマニフェストをアクティブなクラスターに適用するには、次のコマンドを実行してホストを再起動します。
sudo systemctl restart
$ sudo systemctl restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
再起動後、次のコマンドを実行して、Multus CNI プラグインコンポーネントが作成されていることを確認します。
oc get pod -A | grep multus
$ oc get pod -A | grep multus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
openshift-multus dhcp-daemon-ktzqf 1/1 Running 0 45h openshift-multus multus-4frf4 1/1 Running 0 45h
openshift-multus dhcp-daemon-ktzqf 1/1 Running 0 45h openshift-multus multus-4frf4 1/1 Running 0 45h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- まだ行っていない場合は、使用する追加のネットワークを設定して適用します。
- 作成された CR を使用するアプリケーションをデプロイします。
5.1.3. ブリッジセカンダリーネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
次のオブジェクトは、Bridge CNI プラグインの設定パラメーターを説明します。
フィールド | 型 | 説明 |
---|---|---|
|
|
CNI 仕様のバージョン。値 |
|
|
設定する CNI プラグインの名前: |
|
| IPAM CNI プラグインの設定オブジェクト。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。 |
|
|
オプション: 使用する仮想ブリッジの名前を指定します。ブリッジインターフェイスがホストに存在しない場合は、これが作成されます。デフォルト値は |
|
|
オプション: 仮想ネットワークから外すトラフィックの IP マスカレードを有効にするには、 |
|
|
オプション: IP アドレスをブリッジに割り当てるには |
|
|
オプション: ブリッジを仮想ネットワークのデフォルトゲートウェイとして設定するには、 |
|
|
オプション: 仮想ブリッジの事前に割り当てられた IP アドレスの割り当てを許可するには、 |
|
|
オプション: 仮想ブリッジが受信時に使用した仮想ポートでイーサネットフレームを送信できるようにするには、 |
|
|
オプション: ブリッジで無作為検出モード (Promiscuous Mode) を有効にするには、 |
|
| オプション: 最大転送単位 (MTU) を指定された値に設定します。デフォルト値はカーネルによって自動的に設定されます。 |
|
|
オプション: コンテナー側の |
|
|
オプション: MAC スプーフィングチェックを有効にして、コンテナーから発信されるトラフィックをインターフェイスの MAC アドレスに制限します。デフォルト値は |
5.1.3.1. ブリッジ CNI プラグインの設定例 リンクのコピーリンクがクリップボードにコピーされました!
次の例では、MicroShift Multus CNI で使用するために bridge-conf
という名前のセカンダリーネットワークを設定します。
5.1.4. IPVLAN セカンダリーネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
次のオブジェクトは、IPVLAN、ipvlan
、CNI プラグインの設定パラメーターを示しています。
フィールド | 型 | 説明 |
---|---|---|
|
|
CNI 仕様のバージョン。値 |
|
|
CNO 設定に以前に指定した |
|
|
設定する CNI プラグインの名前: |
|
| IPAM CNI プラグインの設定オブジェクト。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。これは、プラグインが連鎖している場合を除き必要です。 |
|
|
オプション: 仮想ネットワークの操作モードを指定します。この値は、 |
|
|
オプション: ネットワーク割り当てに関連付けるイーサネットインターフェイスを指定します。 |
|
| オプション: 最大転送単位 (MTU) を指定された値に設定します。デフォルト値はカーネルによって自動的に設定されます。 |
|
|
オプション: |
-
ipvlan
オブジェクトは、仮想インターフェイスがmaster
インターフェイスと通信することを許可しません。したがって、コンテナーはipvlan
インターフェイスを使用してホストに到達できません。コンテナーが、Precision Time Protocol (PTP
) をサポートするネットワークなど、ホストへの接続を提供するネットワークに参加していることを確認してください。 -
1 つの
master
インターフェイスを、macvlan
とipvlan
の両方を同時に使用するように設定することはできません。 -
インターフェイスに依存できない IP 割り当てスキームの場合、
ipvlan
プラグインは、このロジックを処理する以前のプラグインと連鎖させることができます。master
が省略された場合、前の結果にはスレーブにするipvlan
プラグインのインターフェイス名が 1 つ含まれていなければなりません。ipam
が省略された場合、ipvlan
インターフェイスの設定には前の結果が使用されます。
5.1.4.1. IPVLAN CNI プラグインの設定例 リンクのコピーリンクがクリップボードにコピーされました!
次の例では、ipvlan-net
という名前のセカンダリーネットワークを設定します。
5.1.5. MACVLAN セカンダリーネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下のオブジェクトは、MAC 仮想 LAN (MACVLAN) Container Network Interface (CNI) プラグインの設定パラメーターを説明しています。
フィールド | 型 | 説明 |
---|---|---|
|
|
CNI 仕様のバージョン。値 |
|
|
CNO 設定に以前に指定した |
|
|
設定する CNI プラグインの名前: |
|
| IPAM CNI プラグインの設定オブジェクト。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。 |
|
|
オプション: 仮想ネットワークのトラフィックの可視性を設定します。 |
|
| オプション: 新しく作成された macvlan インターフェイスに関連付けるホストネットワークインターフェイス。値が指定されていない場合は、デフォルトのルートインターフェイスが使用されます。 |
|
| オプション: 指定された値への最大転送単位 (MTU)。デフォルト値はカーネルによって自動的に設定されます。 |
|
|
オプション: |
プラグイン設定の master
キーを指定する場合は、競合の可能性を回避するために、プライマリーネットワークプラグインに関連付けられているものとは異なる物理ネットワークインターフェイスを使用してください。
5.1.5.1. MACVLAN CNI プラグイン設定の例 リンクのコピーリンクがクリップボードにコピーされました!
次の例では、macvlan-net
という名前のセカンダリーネットワークを設定します。