10.7. 基本的なカスタマイズを使用した macvlan ネットワークの設定

クラスター管理者は、macvlan Container Network Interface (CNI) プラグインを使用して、クラスターの追加ネットワークを設定できます。Pod がネットワークに割り当てられている場合、プラグインはホストの親インターフェースからサブインターフェースを作成します。各サブデバイスに対して固有のハードウェアの MAC アドレスが生成されます。

重要

このプラグインがサブインターフェース用に生成する固有の MAC アドレスは、クラウドプロバイダーのセキュリティーポリシーとの互換性がない場合があります。

基本的な設定を YAML に直接指定します。この方法では、JSON で CNI オブジェクトを直接使用して macvlan 設定を指定するよりも設定オプションが少なくなります。

10.7.1. macvlan CNI プラグインを使用した追加ネットワーク割り当ての作成

Cluster Network Operator (CNO) は追加ネットワークの定義を管理します。作成する追加ネットワークを指定する場合、CNO は NetworkAttachmentDefinition オブジェクトを自動的に作成します。

重要

Cluster Network Operator が管理する NetworkAttachmentDefinition オブジェクトは編集しないでください。これを実行すると、追加ネットワークのネットワークトラフィックが中断する可能性があります。

前提条件

  • OpenShift CLI (oc) をインストールすること。
  • cluster-admin 権限を持つユーザーとしてログインすること。

手順

クラスターの追加ネットワークを作成するには、以下の手順を実施します。

  1. 以下のコマンドを実行して CNO CR を編集します。

    $ oc edit networks.operator.openshift.io cluster
  2. 以下のサンプル CR のように、作成される追加ネットワークの設定を追加して、作成している CR を変更します。

    以下の YAML は、macvlan CNI プラグインを設定します。

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      additionalNetworks: 1
      - name: test-network-1
        namespace: test-1
        type: SimpleMacvlan
        simpleMacvlanConfig:
          ipamConfig:
            type: static
            staticIPAMConfig:
              addresses:
              - address: 10.1.1.7/24
    1
    追加ネットワーク割り当て定義の設定を指定します。
  3. 変更を保存し、テキストエディターを終了して、変更をコミットします。
  4. 以下のコマンドを実行して、CNO が NetworkAttachmentDefinition オブジェクトを作成していることを確認します。<namespace> を、ネットワーク割り当ての設定時に指定した namespace に置き換えます。CNO がオブジェクトを作成するまでに遅延が生じる可能性があります。

    $ oc get network-attachment-definitions -n <namespace>

    出力例

    NAME                 AGE
    test-network-1       14m

10.7.1.1. macvlan CNI プラグインの設定

以下の YAML は、macvlan Container Network Interface (CNI) プラグインの設定パラメーターについて説明しています。

macvlan YAML の設定

name: <name> 1
namespace: <namespace> 2
type: SimpleMacvlan
simpleMacvlanConfig:
  master: <master> 3
  mode: <mode> 4
  mtu: <mtu> 5
  ipamConfig: 6
    ...

1
作成している追加ネットワーク割り当ての名前を指定します。名前は指定された namespace 内で一意である必要があります。
2
ネットワークの割り当てを作成する namespace を指定します。値が指定されない場合は、default namespace が使用されます。
3
仮想インターフェースに関連付けるイーサネット、ボンディング、または VLAN インターフェース。master の値が指定されない場合、ホストシステムのプライマリーイーサネットインターフェースが使用されます。
4
仮想ネットワークのトラフィックの可視性を設定します。bridgepassthruprivate、または vepa のいずれかである必要があります。mode の値が指定されない場合、デフォルトの値は bridge になります。
5
最大転送単位 (MTU) を指定された値に設定します。デフォルト値はカーネルによって自動的に設定されます。
6
IPAM CNI プラグインの設定オブジェクトを指定します。プラグインは、割り当て定義についての IP アドレスの割り当てを管理します。
10.7.1.1.1. macvlan 設定の例

以下の例では、macvlan-net という名前の追加のネットワークを設定します。

name: macvlan-net
namespace: work-network
type: SimpleMacvlan
simpleMacvlanConfig:
  ipamConfig:
    type: DHCP

10.7.1.2. IPAM CNI プラグインの設定

IPAM Container Network Interface (CNI) プラグインは、他の CNI プラグインに IP アドレス管理 (IPAM) を提供します。

以下の YAML 設定は設定可能なパラメーターについて説明しています。

IPAM CNI プラグイン YAML 設定オブジェクト

ipamConfig:
  type: <type> 1
  ... 2

1
IP アドレスの割り当てを管理できるようにプラグインを設定するには static を指定します。DHCP を指定して、DHCP サーバーが IP アドレスの割り当てを管理できるようにします。DHCP の値を指定する場合は、追加のパラメーターを指定できません。
2
type パラメーターを static に設定する場合、staticIPAMConfig パラメーターを指定します。
10.7.1.2.1. 静的 IPAM 設定 YAML

以下の YAML は、静的 IP アドレスの割り当ての設定について説明しています。

静的 IPAM 設定 YAML

ipamConfig:
  type: static
  staticIPAMConfig:
    addresses: 1
    - address: <address> 2
      gateway: <gateway> 3
    routes: 4
    - destination: <destination> 5
      gateway: <gateway> 6
    dns: 7
      nameservers: 8
      - <nameserver>
      domain: <domain> 9
      search: 10
      - <search_domain>

1
仮想インターフェースに割り当てる IP アドレスを定義するマッピングのコレクション。IPv4 と IPv6 の IP アドレスの両方がサポートされます。
2
指定する IP アドレスおよびネットワークプレフィックス。たとえば、10.10.21.10/24 を指定すると、追加のネットワークに IP アドレスの 10.10.21.10 が割り当てられ、ネットマスクは 255.255.255.0 になります。
3
egress ネットワークトラフィックをルーティングするデフォルトのゲートウェイ。
4
Pod 内で設定するルートを記述するマッピングのコレクション。
5
CIDR 形式の IP アドレス範囲 (192.168.17.0/24、またはデフォルトルートの 0.0.0.0/0)。
6
ネットワークトラフィックがルーティングされるゲートウェイ。
7
オプション: DNS 設定。
8
DNS クエリーを送信する 1 つ以上の IP アドレスのコレクション。
9
ホスト名に追加するデフォルトのドメイン。たとえば、ドメインが example.com に設定されている場合、example-host の DNS ルックアップクエリーは example-host.example.com として書き換えられます。
10
DNS ルックアップのクエリー時に非修飾ホスト名に追加されるドメイン名の配列 (例: example-host)。
10.7.1.2.2. 動的 IPAM 設定 YAML

以下の YAML は、静的 IP アドレスの割り当ての設定について説明しています。

動的 IPAM 設定 YAML

ipamConfig:
  type: DHCP

10.7.1.2.3. 静的 IP アドレス割り当ての設定例

以下の例は、静的 IP アドレスの IPAM 設定を示しています。

ipamConfig:
  type: static
  staticIPAMConfig:
    addresses:
    - address: 198.51.100.11/24
      gateway: 198.51.100.10
    routes:
    - destination: 0.0.0.0/0
      gateway: 198.51.100.1
    dns:
      nameservers:
      - 198.51.100.1
      - 198.51.100.2
      domain: testDNS.example
      search:
      - testdomain1.example
      - testdomain2.example
10.7.1.2.4. 動的 IP アドレス割り当ての設定例

以下の例では、DHCP の IPAM 設定を示しています。

ipamConfig:
  type: DHCP