第5章 複数ネットワーク


5.1. 複数ネットワークの使用について

デフォルトの OVN-Kubernetes Container Network Interface (CNI) プラグインに加えて、MicroShift Multus CNI を使用して他の CNI プラグインをチェーンすることもできます。MicroShift Multus のインストールおよび使用はオプションです。

5.1.1. MicroShift のセカンダリーネットワーク

MicroShift Multus CNI プラグインを使用すると、他のネットワークの Pod に追加のインターフェイスを追加できます。この設定では、スイッチまたはルーティングなどのネットワーク機能を提供する Pod を設定する際に柔軟性を持たせることができます。

ノードのインストール中、設定をカスタマイズしない限り、default の Pod ネットワークはデフォルト値で設定されます。デフォルトのネットワークは、ノードの通常のネットワークトラフィックをすべて処理します。

5.1.1.1. ネットワーク分離のためにサポートされているセカンダリーネットワーク

MicroShift 4.19 では、次のセカンダリーネットワークがサポートされています。

  • 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 を使用するセカンダリーネットワークインターフェイスを追加すると、net1net2、…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 アクセス権限がある。

手順

  1. 次のコマンドを実行して、Multus RPM パッケージをインストールします。

    $ sudo dnf install microshift-multus
    ヒント

    ここで追加のネットワーク用のカスタムリソース (CR) を作成すると、1 回の再起動でインストールを完了し、設定を適用できます。

  2. パッケージマニフェストをアクティブなノードに適用するには、次のコマンドを実行してホストを再起動します。

    $ sudo systemctl restart

検証

  • 再起動後、次のコマンドを実行して、Multus CNI プラグインコンポーネントが作成されていることを確認します。

    $ oc get pod -A | grep multus

    出力例

    openshift-multus      dhcp-daemon-ktzqf     1/1   Running   0     45h
    openshift-multus      multus-4frf4          1/1   Running   0     45h

次のステップ

  1. まだ行っていない場合は、使用する追加のネットワークを設定して適用します。
  2. 作成された CR を使用するアプリケーションをデプロイします。

5.1.3. ブリッジセカンダリーネットワークの設定

ブリッジ CNI プラグイン JSON 設定オブジェクトは、ブリッジ CNI プラグインの設定パラメーターを記述します。次の表に、これらのパラメーターの詳細を示します。

Expand
フィールド説明

cniVersion

string

CNI 仕様のバージョン。値 0.4.0 が必要です。

type

string

設定する CNI プラグインの名前: bridge

ipam

object

IPAM CNI プラグインの設定オブジェクト。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。

bridge

string

オプション: 使用する仮想ブリッジの名前を指定します。ブリッジインターフェイスがホストに存在しない場合は、ブリッジインターフェイスが作成されます。デフォルト値は cni0 です。

ipMasq

boolean

オプション: 仮想ネットワークから外すトラフィックの IP マスカレードを有効にするには、true に設定します。すべてのトラフィックの送信元 IP アドレスは、ブリッジの IP アドレスに書き換えられます。ブリッジに IP アドレスがない場合は、この設定は影響を与えません。デフォルト値は false です。

isGateway

boolean

オプション: IP アドレスをブリッジに割り当てるには true に設定します。デフォルト値は false です。

isDefaultGateway

boolean

オプション: ブリッジを仮想ネットワークのデフォルトゲートウェイとして設定するには、true に設定します。デフォルト値は false です。isDefaultGatewaytrue に設定される場合、isGateway も自動的に true に設定されます。

forceAddress

boolean

オプション: 仮想ブリッジの事前に割り当てられた IP アドレスの割り当てを許可するには、true に設定します。false に設定される場合、重複サブセットの IPv4 アドレスまたは IPv6 アドレスが仮想ブリッジに割り当てられるとエラーが発生します。デフォルト値は false です。

hairpinMode

boolean

オプション: 仮想ブリッジが受信時に使用した仮想ポートでイーサネットフレームを送信できるようにするには、true に設定します。このモードは、Reflective Relay (リフレクティブリレー) としても知られています。デフォルト値は false です。

promiscMode

boolean

オプション: ブリッジで無作為検出モード (Promiscuous Mode) を有効にするには、true に設定します。デフォルト値は false です。

mtu

integer

オプション: 最大転送単位 (MTU) を指定された値に設定します。デフォルト値はカーネルによって自動的に設定されます。

enabledad

boolean

オプション: コンテナー側の veth の重複アドレス検出を有効にします。デフォルト値は false です。

macspoofchk

boolean

オプション: MAC スプーフィングチェックを有効にして、コンテナーから発信されるトラフィックをインターフェイスの MAC アドレスに制限します。デフォルト値は false です。

5.1.3.1. ブリッジ CNI プラグインの設定例

次の例では、MicroShift Multus CNI で使用するために bridge-conf という名前のセカンダリーネットワークを設定します。

apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: bridge-conf
spec:
  config: '{
      "cniVersion": "0.4.0",
      "type": "bridge",
      "bridge": "test-bridge",
      "mode": "bridge",
      "ipam": {
        "type": "host-local",
        "ranges": [
          [
            {
              "subnet": "10.10.0.0/16",
              "rangeStart": "10.10.1.20",
              "rangeEnd": "10.10.3.50",
              "gateway": "10.10.0.254"
            }
          ]
        ],
        "dataDir": "/var/lib/cni/test-bridge"
      }
    }'

5.1.4. IPVLAN セカンダリーネットワークの設定

IPVLAN CNI プラグイン JSON 設定オブジェクトは、IPVLAN、ipvlan、CNI プラグインの設定パラメーターを記述します。次の表に、これらのパラメーターの詳細を示します。

Expand
フィールド説明

cniVersion

string

CNI 仕様のバージョン。値 0.3.1 が必要です。

name

string

CNO 設定に以前に指定した name パラメーターの値。

type

string

設定する CNI プラグインの名前: ipvlan

ipam

object

IPAM CNI プラグインの設定オブジェクト。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。これは、プラグインが連鎖している場合を除き必要です。

mode

string

オプション: 仮想ネットワークの操作モードを指定します。この値は、l2l3、または l3s である必要があります。デフォルト値は l2 です。

master

string

オプション: ネットワーク割り当てに関連付けるイーサネットインターフェイスを指定します。master が指定されない場合、デフォルトのネットワークルートのインターフェイスが使用されます。

mtu

integer

オプション: 最大転送単位 (MTU) を指定された値に設定します。デフォルト値はカーネルによって自動的に設定されます。

linkInContainer

boolean

オプション: master インターフェイスがコンテナーネットワーク namespace にあるか、メインネットワーク namespace にあるかを指定します。コンテナー namespace の master インターフェイスの使用を要求するには、値を true に設定します。

重要
  • ipvlan オブジェクトは、仮想インターフェイスが master インターフェイスと通信することを許可しません。したがって、コンテナーは ipvlan インターフェイスを使用してホストに到達できません。コンテナーが、Precision Time Protocol (PTP) をサポートするネットワークなど、ホストへの接続を提供するネットワークに参加していることを確認してください。
  • 1 つの master インターフェイスを、macvlanipvlan の両方を同時に使用するように設定することはできません。
  • インターフェイスに依存できない IP 割り当てスキームの場合、ipvlan プラグインは、このロジックを処理する以前のプラグインと連鎖させることができます。master が省略された場合、前の結果にはスレーブにする ipvlan プラグインのインターフェイス名が 1 つ含まれていなければなりません。ipam が省略された場合、ipvlan インターフェイスの設定には前の結果が使用されます。

5.1.4.1. IPVLAN CNI プラグインの設定例

次の例では、ipvlan-net という名前のセカンダリーネットワークを設定します。

{
  "cniVersion": "0.3.1",
  "name": "ipvlan-net",
  "type": "ipvlan",
  "master": "eth1",
  "linkInContainer": false,
  "mode": "l3",
  "ipam": {
    "type": "static",
    "addresses": [
       {
         "address": "192.168.10.10/24"
       }
    ]
  }
}

5.1.5. MACVLAN セカンダリーネットワークの設定

MACVLAN CNI プラグイン JSON 設定オブジェクトは、MAC 仮想 LAN (MACVLAN) Container Network Interface (CNI)プラグインの設定パラメーターを記述します。以下の表では、これらのパラメーターについて説明しています。

Expand
フィールド説明

cniVersion

string

CNI 仕様のバージョン。値 0.3.1 が必要です。

name

string

CNO 設定に以前に指定した name パラメーターの値。

type

string

設定する CNI プラグインの名前: macvlan

ipam

object

IPAM CNI プラグインの設定オブジェクト。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。

mode

string

オプション: 仮想ネットワークのトラフィックの可視性を設定します。bridgepassthruprivate、または vepa のいずれかである必要があります。値が指定されない場合、デフォルト値は bridge になります。

master

string

オプション: 新しく作成された macvlan インターフェイスに関連付けるホストネットワークインターフェイス。値が指定されていない場合は、デフォルトのルートインターフェイスが使用されます。

mtu

integer

オプション: 指定された値への最大転送単位 (MTU)。デフォルト値はカーネルによって自動的に設定されます。

linkInContainer

boolean

オプション: master インターフェイスがコンテナーネットワーク namespace にあるか、メインネットワーク namespace にあるかを指定します。コンテナー namespace の master インターフェイスの使用を要求するには、値を true に設定します。

注記

プラグイン設定の master キーを指定する場合は、競合の可能性を回避するために、プライマリーネットワークプラグインに関連付けられているものとは異なる物理ネットワークインターフェイスを使用してください。

5.1.5.1. MACVLAN CNI プラグイン設定の例

次の例では、macvlan-net という名前のセカンダリーネットワークを設定します。

{
  "cniVersion": "0.3.1",
  "name": "macvlan-net",
  "type": "macvlan",
  "master": "eth1",
  "linkInContainer": false,
  "mode": "bridge",
  "ipam": {
    "type": "dhcp"
    }
}

5.1.6. 関連情報

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る