3.2. 他の CNI プラグインを使用したセカンダリーネットワークの作成


次のセクションでは、セカンダリーネットワーク用の特定の設定フィールドを説明します。

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

次のオブジェクトは、Bridge CNI プラグインの設定パラメーターを説明します。

Expand
表3.3 Bridge CNI プラグイン JSON 設定オブジェクト
フィールド説明

cniVersion

string

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

name

string

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

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 です。

vlan

string

オプション: 仮想 LAN (VLAN) タグを整数値として指定します。デフォルトで、VLAN タグは割り当てません。

preserveDefaultVlan

string

オプション: デフォルトの VLAN をブリッジに接続されている veth 側で保持する必要があるか示します。デフォルトは true です。

vlanTrunk

list

オプション: VLAN トランクタグを割り当てます。デフォルト値は none です。

mtu

integer

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

enabledad

boolean

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

macspoofchk

boolean

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

注記

VLAN パラメーターは、veth のホスト側に VLAN タグを設定し、ブリッジインターフェイスで vlan_filtering 機能を有効にします。

注記

L2 ネットワークのアップリンクを設定するには、次のコマンドを使用してアップリンクインターフェイスで VLAN を許可する必要があります。

$  bridge vlan add vid VLAN_ID dev DEV
Copy to Clipboard Toggle word wrap

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

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

{
  "cniVersion": "0.3.1",
  "name": "bridge-net",
  "type": "bridge",
  "isGateway": true,
  "vlan": 2,
  "ipam": {
    "type": "dhcp"
    }
}
Copy to Clipboard Toggle word wrap

3.2.2. Bond CNI セカンダリーネットワークの設定

Bond Container Network Interface (Bond CNI) を使用すると、複数のネットワークインターフェイスを、コンテナー内の 1 つの論理的な "ボンディングされた" インターフェイスに集約できます。これにより、ネットワークの冗長性とフォールトトレランスが向上します。このプラグインを使用したボンディングでは、SR-IOV Virtual Function (VF) のみがサポートされます。

次の表は、Bond CNI プラグインの設定パラメーターを示しています。

Expand
表3.4 Bond CNI プラグインの JSON 設定オブジェクト
フィールド説明

name

string

この CNI ネットワークアタッチメント定義に付ける名前を指定します。この名前は、コンテナー内のインターフェイスを識別および参照するために使用されます。

cniVersion

string

CNI 仕様のバージョン。

type

string

設定する CNI プラグインの名前を指定します (bond)。

miimon

string

Address Resolution Protocol (ARP) のリンク監視頻度をミリ秒単位で指定します。このパラメーターは、集約されたインターフェイスの可用性を確認するために、ボンディングインターフェイスが ARP 要求を送信する頻度を定義します。

mtu

integer

オプション: ボンディングの最大転送単位 (MTU) を指定します。デフォルトは 1500 です。

failOverMac

integer

オプション: ボンディングの failOverMac 設定を指定します。デフォルトは 0 です。

mode

string

ボンディングポリシーを指定します。

linksInContainer

boolean

オプション: ボンディング対象のネットワークインターフェイスが、ボンディングの開始時に、コンテナーのネットワーク namespace 内に直接作成され、使用可能な状態になっていることを前提とするかどうかを指定します。デフォルトの false の場合、CNI プラグインはボンディングの作成を試みる前に、ホストシステム上でこれらのインターフェイスを検索します。

links

object

ボンディングするインターフェイスを指定します。

ipam

object

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

3.2.2.1. Bond CNI プラグインの設定例

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

{
 "type": "bond",
 "cniVersion": "0.3.1",
 "name": "bond-net1",
 "mode": "active-backup",
 "failOverMac": 1,
 "linksInContainer": true,
 "miimon": "100",
 "mtu": 1500,
 "links": [
       {"name": "net1"},
       {"name": "net2"}
   ],
  "ipam": {
        "type": "host-local",
        "subnet": "10.56.217.0/24",
        "routes": [{
        "dst": "0.0.0.0/0"
        }],
        "gateway": "10.56.217.1"
    }
}
Copy to Clipboard Toggle word wrap

3.2.3. ホストデバイスのセカンダリーネットワークの設定

注記

devicehwaddrkernelpath、または pciBusID のいずれかのパラメーターを設定してネットワークデバイスを指定します。

以下のオブジェクトは、ホストデバイス CNI プラグインの設定パラメーターを説明しています。

Expand
表3.5 ホストデバイス CNI プラグイン JSON 設定オブジェクト
フィールド説明

cniVersion

string

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

name

string

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

type

string

設定する CNI プラグインの名前: host-device

device

string

オプション: eth0 などのデバイスの名前。

hwaddr

string

オプション: デバイスハードウェアの MAC アドレス。

kernelpath

string

オプション: /sys/devices/pci0000:00/0000:00:1f.6 などの Linux カーネルデバイス。

pciBusID

string

オプション: 0000:00:1f.6 などのネットワークデバイスの PCI アドレスを指定します。

3.2.3.1. ホストデバイス設定例

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

{
  "cniVersion": "0.3.1",
  "name": "hostdev-net",
  "type": "host-device",
  "device": "eth1"
}
Copy to Clipboard Toggle word wrap

3.2.4. VLAN セカンダリーネットワークの設定

次のオブジェクトは、VLAN、vlan、CNI プラグインの設定パラメーターを示しています。

Expand
表3.6 VLAN CNI プラグイン JSON 設定オブジェクト
フィールド説明

cniVersion

string

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

name

string

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

type

string

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

master

string

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

vlanId

integer

VLAN の ID を設定します。

ipam

object

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

mtu

integer

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

dns

integer

オプション: 返される DNS 情報。たとえば、DNS ネームサーバーの優先順位順リストなどです。

linkInContainer

boolean

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

重要

vlan 設定を持つ NetworkAttachmentDefinition カスタムリソース定義 (CRD) は、ノード内の単一の Pod でのみ使用できます。CNI プラグインは、同じ master インターフェイス上に同じ vlanId を持つ vlan サブインターフェイスを複数作成できないためです。

3.2.4.1. VLAN 設定例

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

{
  "name": "vlan-net",
  "cniVersion": "0.3.1",
  "type": "vlan",
  "master": "eth0",
  "mtu": 1500,
  "vlanId": 5,
  "linkInContainer": false,
  "ipam": {
      "type": "host-local",
      "subnet": "10.1.1.0/24"
  },
  "dns": {
      "nameservers": [ "10.1.1.1", "8.8.8.8" ]
  }
}
Copy to Clipboard Toggle word wrap

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

次のオブジェクトは、IPVLAN、ipvlan、CNI プラグインの設定パラメーターを示しています。

Expand
表3.7 IPVLAN CNI プラグイン JSON 設定オブジェクト
フィールド説明

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 インターフェイスの設定には前の結果が使用されます。

3.2.5.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"
       }
    ]
  }
}
Copy to Clipboard Toggle word wrap

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

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

Expand
表3.8 MACVLAN CNI プラグイン JSON 設定オブジェクト
フィールド説明

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

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

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

{
  "cniVersion": "0.3.1",
  "name": "macvlan-net",
  "type": "macvlan",
  "master": "eth1",
  "linkInContainer": false,
  "mode": "bridge",
  "ipam": {
    "type": "dhcp"
    }
}
Copy to Clipboard Toggle word wrap

3.2.7. TAP セカンダリーネットワークの設定

以下のオブジェクトは、TAP CNI プラグインの設定パラメーターを説明しています。

Expand
表3.9 TAP CNI プラグイン JSON 設定オブジェクト
フィールド説明

cniVersion

string

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

name

string

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

type

string

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

mac

string

オプション: インターフェイスの指定された MAC アドレスを要求します。

mtu

integer

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

selinuxcontext

string

オプション: タップデバイスに関連付ける SELinux コンテキスト。

注記

OpenShift Container Platform には、値 system_u:system_r:container_t:s0 が必要です。

multiQueue

boolean

オプション: マルチキューを有効にするには true に設定します。

owner

integer

オプション: タップデバイスを所有するユーザー。

group

integer

オプション: タップデバイスを所有するグループ。

bridge

string

オプション: タップデバイスを既存のブリッジのポートとして設定します。

3.2.7.1. Tap 設定の例

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

{
 "name": "mynet",
 "cniVersion": "0.3.1",
 "type": "tap",
 "mac": "00:11:22:33:44:55",
 "mtu": 1500,
 "selinuxcontext": "system_u:system_r:container_t:s0",
 "multiQueue": true,
 "owner": 0,
 "group": 0
 "bridge": "br1"
}
Copy to Clipboard Toggle word wrap

3.2.7.2. TAP CNI プラグインの SELinux ブール値の設定

container_t SELinux コンテキストを使用してタップデバイスを作成するには、Machine Config Operator (MCO) を使用してホスト上で container_use_devices ブール値を有効にします。

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次の詳細を含む、setsebool-container-use-devices.yaml などの名前の新しい YAML ファイルを作成します。

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 99-worker-setsebool
    spec:
      config:
        ignition:
          version: 3.2.0
        systemd:
          units:
          - enabled: true
            name: setsebool.service
            contents: |
              [Unit]
              Description=Set SELinux boolean for the TAP CNI plugin
              Before=kubelet.service
    
              [Service]
              Type=oneshot
              ExecStart=/usr/sbin/setsebool container_use_devices=on
              RemainAfterExit=true
    
              [Install]
              WantedBy=multi-user.target graphical.target
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、新しい MachineConfig オブジェクトを作成します。

    $ oc apply -f setsebool-container-use-devices.yaml
    Copy to Clipboard Toggle word wrap
    注記

    MachineConfig オブジェクトに変更を適用すると、変更が適用された後、影響を受けるすべてのノードが正常に再起動します。この更新が適用されるまでに、時間がかかる場合があります。

  3. 次のコマンドを実行して、変更が適用されていることを確認します。

    $ oc get machineconfigpools
    Copy to Clipboard Toggle word wrap

    予想される出力

    NAME        CONFIG                                                UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master      rendered-master-e5e0c8e8be9194e7c5a882e047379cfa      True      False      False      3              3                   3                     0                      7d2h
    worker      rendered-worker-d6c9ca107fba6cd76cdcbfcedcafa0f2      True      False      False      3              3                   3                     0                      7d
    Copy to Clipboard Toggle word wrap

    注記

    すべてのノードが更新され、準備完了状態になっている必要があります。

3.2.8. セカンダリーネットワークで route-override プラグインを使用してルートを設定する

次のオブジェクトは、route-override CNI プラグインの設定パラメーターを示しています。

Expand
表3.10 Route override CNI プラグイン JSON 設定オブジェクト
フィールド説明

type

string

設定する CNI プラグインの名前: route-override

flushroutes

boolean

オプション: 既存ルートをフラッシュするには true に設定します。

flushgateway

boolean

オプション: デフォルトルート、つまりゲートウェイルートをフラッシュするには true に設定します。

delroutes

object

オプション: コンテナー namespace から削除するルートのリストを指定します。

addroutes

object

オプション: コンテナー namespace に追加するルートのリストを指定します。各ルートは、dst フィールドとオプションの gw フィールドを含むディクショナリーです。gw が省略されている場合、プラグインはデフォルトのゲートウェイ値を使用します。

skipcheck

boolean

オプション: check コマンドをスキップするには、これを true に設定します。デフォルトでは、CNI プラグインはコンテナーのライフサイクル中にネットワーク設定を検証します。route-override を使用してルートを動的に変更する場合、このチェックをスキップすると、最終設定に更新されたルートが確実に反映されます。

3.2.8.1. route-override プラグインの設定例

route-override CNI は、親 CNI と連鎖して使用するように設計された CNI タイプです。独立して動作するのではなく、まず親 CNI を利用してネットワークインターフェイスを作成して IP アドレスを割り当てます。その後、ルーティングルールの変更が可能になります。

次の例では、mymacvlan という名前のセカンダリーネットワークを設定します。親 CNI は、eth1 にアタッチされたネットワークインターフェイスを作成し、host-local IPAM を使用して 192.168.1.0/24 の範囲の IP アドレスを割り当てます。これにより route-override CNI が親 CNI に連結され、既存ルートをフラッシュし、192.168.0.0/24 へのルートを削除し、カスタムゲートウェイを使用して 192.168.0.0/24 の新しいルートを追加することで、ルーティングルールが変更されます。

{
    "cniVersion": "0.3.0",
    "name": "mymacvlan",
    "plugins": [
        {
            "type": "macvlan",         
1

            "master": "eth1",
            "mode": "bridge",
            "ipam": {
                "type": "host-local",
                "subnet": "192.168.1.0/24"
            }
        },
        {
            "type": "route-override",    
2

            "flushroutes": true,
            "delroutes": [
                {
                    "dst": "192.168.0.0/24"
                }
            ],
            "addroutes": [
                {
                    "dst": "192.168.0.0/24",
                    "gw": "10.1.254.254"
                }
            ]
        }
    ]
}
Copy to Clipboard Toggle word wrap
1
親 CNI は eth1 にアタッチされたネットワークインターフェイスを作成します。
2
連結された route-override CNI はルーティングルールを変更します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2025 Red Hat