7.6. ipvlan ネットワークの設定
クラスター管理者は、ipvlan Container Network Interface (CNI) プラグインを使用して、クラスターの追加ネットワークを設定できます。このプラグインにより作成される仮想ネットワークは、指定する物理インターフェイスに関連付けられます。
7.6.1. IPVLAN CNI プラグインを使用した追加のネットワーク割り当ての作成
Cluster Network Operator (CNO) は追加ネットワークの定義を管理します。作成する追加ネットワークを指定する場合、CNO は NetworkAttachmentDefinition
オブジェクトを自動的に作成します。
Cluster Network Operator が管理する NetworkAttachmentDefinition
オブジェクトは編集しないでください。これを実行すると、追加ネットワークのネットワークトラフィックが中断する可能性があります。
前提条件
-
OpenShift CLI (
oc
) をインストールしている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
クラスターの追加ネットワークを作成するには、以下の手順を実施します。
以下のコマンドを実行して CNO CR を編集します。
$ oc edit networks.operator.openshift.io cluster
以下のサンプル CR のように、作成される追加ネットワークの設定を追加して、作成している CR を変更します。
以下の YAML は IPVLAN CNI プラグインを設定します。
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: additionalNetworks: 1 - name: test-network-1 namespace: test-1 type: Raw rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "test-network-1", "type": "ipvlan", "master": "eth1", "mode": "l2", "ipam": { "type": "static", "addresses": [ { "address": "191.168.1.23/24" } ] } }'
- 1
- 追加ネットワーク割り当て定義の設定を指定します。
- 変更を保存し、テキストエディターを終了して、変更をコミットします。
オプション: 以下のコマンドを実行して、CNO が
NetworkAttachmentDefinition
オブジェクトを作成していることを確認します。CNO が CR を作成するまでに遅延が生じる可能性があります。$ oc get network-attachment-definitions -n <namespace>
出力例
NAME AGE test-network-1 14m
7.6.1.1. IPVLAN の設定
IPVLAN Container Network Interface (CNI) プラグインを使用する追加のネットワーク割り当ての設定は、以下の 2 つの部分に分けて提供されます。
- Cluster Network Operator (CNO) の設定
- CNI プラグインの設定
CNO 設定では、追加ネットワーク割り当ての名前と割り当てを作成する namespace を指定します。このプラグインは、CNO 設定の rawCNIConfig
パラメーターで指定される JSON オブジェクトで設定されます。
以下の YAML は、CNO の設定パラメーターについて説明しています。
Cluster Network Operator YAML の設定
name: <name> 1 namespace: <namespace> 2 rawCNIConfig: '{ 3 ... }' type: Raw
以下のオブジェクトは、IPVLAN CNI プラグインの設定パラメーターについて説明しています。
IPVLAN CNI プラグイン JSON 設定オブジェクト
{ "cniVersion": "0.3.1", "name": "<name>", 1 "type": "ipvlan", "mode": "<mode>", 2 "master": "<master>", 3 "mtu": <mtu>, 4 "ipam": { 5 ... } }
- 1
- CNO 設定に以前に指定した
name
パラメーターの値を指定します。 - 2
- 仮想ネットワークの操作モードを指定します。この値は、
l2
、l3
、またはl3s
である必要があります。デフォルト値はl2
です。 - 3
- ネットワーク割り当てに関連付けるイーサネットインターフェイスを指定します。
master
が指定されない場合、デフォルトのネットワークルートのインターフェイスが使用されます。 - 4
- 最大転送単位 (MTU) を指定された値に設定します。デフォルト値はカーネルによって自動的に設定されます。
- 5
- IPAM CNI プラグインの設定オブジェクトを指定します。プラグインは、割り当て定義についての IP アドレスの割り当てを管理します。
7.6.1.1.1. IPVLAN 設定例
以下の例では、ipvlan-net
という名前の追加のネットワークを設定します。
name: ipvlan-net
namespace: work-network
type: Raw
rawCNIConfig: '{ 1
"cniVersion": "0.3.1",
"name": "work-network",
"type": "ipvlan",
"master": "eth1",
"mode": "l3",
"ipam": {
"type": "dhcp"
}
}'
- 1
- CNI 設定オブジェクトは YAML 文字列として指定されます。
7.6.1.2. IPAM CNI プラグインの設定
IPAM Container Network Interface (CNI) プラグインは、他の CNI プラグインに IP アドレス管理 (IPAM) を提供します。DHCP を使用して、静的 IP アドレスの割り当てまたは動的 IP アドレスの割り当てのいずれかに IPAM を設定することができます。指定する DHCP サーバーは、追加のネットワークから到達可能である必要があります。
以下の JSON 設定オブジェクトは設定できるパラメーターについて説明しています。
7.6.1.2.1. 静的 IP アドレス割り当ての設定
以下の JSON は、静的 IP アドレスの割り当ての設定について説明しています。
静的割り当ての設定
{ "ipam": { "type": "static", "addresses": [ 1 { "address": "<address>", 2 "gateway": "<gateway>" 3 } ], "routes": [ 4 { "dst": "<dst>", 5 "gw": "<gw>" 6 } ], "dns": { 7 "nameservers": ["<nameserver>"], 8 "domain": "<domain>", 9 "search": ["<search_domain>"] 10 } } }
- 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
)。
7.6.1.2.2. 動的 IP アドレス割り当ての設定
以下の JSON は、DHCP を使用した動的 IP アドレスの割り当ての設定について説明しています。
Pod は、作成時に元の DHCP リースを取得します。リースは、クラスターで実行している最小限の DHCP サーバーデプロイメントで定期的に更新する必要があります。
DHCP サーバーのデプロイメントをトリガーするには、以下の例にあるように Cluster Network Operator 設定を編集して shim ネットワーク割り当てを作成する必要があります。
shim ネットワーク割り当ての定義例
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: ... additionalNetworks: - name: dhcp-shim namespace: default rawCNIConfig: |- { "name": "dhcp-shim", "cniVersion": "0.3.1", "type": "bridge", "master": "ens5", "ipam": { "type": "dhcp" } }
DHCP 割り当ての設定
{ "ipam": { "type": "dhcp" } }
7.6.1.2.3. 静的 IP アドレス割り当ての設定例
静的 IP アドレスの割り当てに IPAM を設定することができます。
{ "ipam": { "type": "static", "addresses": [ { "address": "191.168.1.7" } ] } }
7.6.1.2.4. DHCP を使用した動的 IP アドレス割り当ての設定例
DHCP に IPAM を設定できます。
{ "ipam": { "type": "dhcp" } }