13.2. チューニング CNI を使用してオールマルチキャストモードを有効にする
チューニング Container Network Interface (CNI) メタプラグインを使用して、オールマルチキャストモードを有効にできます。
次の手順では、チューニング CNI を設定してオールマルチキャストモードを有効にする方法を説明します。
手順
次の内容で、
tuning-example.yaml
などのネットワーク接続定義を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: <name> namespace: default spec: config: '{ "cniVersion": "0.4.0", "name": "<name>", "plugins": [{ "type": "<main_CNI_plugin>" }, { "type": "tuning", "allmulti": true } } ] }
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: <name>
1 namespace: default
2 spec: config: '{ "cniVersion": "0.4.0",
3 "name": "<name>",
4 "plugins": [{ "type": "<main_CNI_plugin>"
5 }, { "type": "tuning",
6 "allmulti": true
7 } } ] }
- 1
- 作成する追加のネットワーク割り当ての名前を指定します。名前は指定された namespace 内で一意である必要があります。
- 2
- オブジェクトが関連付けられている namespace を指定します。
- 3
- CNI 仕様のバージョンを指定します。
- 4
- 設定の名前を指定します。設定名は、ネットワーク接続定義の名前の値と一致させます。
- 5
- 設定するメイン CNI プラグインの名前を指定します。
- 6
- CNI メタプラグインの名前を指定します。
- 7
- インターフェイスのオールマルチキャストモードを変更します。有効にすると、ネットワーク上のすべてのマルチキャストパケットがそのインターフェイスで受信されます。
YAML ファイルの例を次に示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: setallmulti namespace: default spec: config: '{ "cniVersion": "0.4.0", "name": "setallmulti", "plugins": [ { "type": "bridge" }, { "type": "tuning", "allmulti": true } ] }'
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: setallmulti namespace: default spec: config: '{ "cniVersion": "0.4.0", "name": "setallmulti", "plugins": [ { "type": "bridge" }, { "type": "tuning", "allmulti": true } ] }'
次のコマンドを実行して、YAML ファイルで指定された設定を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f tuning-allmulti.yaml
$ oc apply -f tuning-allmulti.yaml
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow networkattachmentdefinition.k8s.cni.cncf.io/setallmulti created
networkattachmentdefinition.k8s.cni.cncf.io/setallmulti created
次の
examplepod.yaml
サンプルファイルで指定されているものと同様のネットワーク接続定義を持つ Pod を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Pod metadata: name: allmultipod namespace: default annotations: k8s.v1.cni.cncf.io/networks: setallmulti spec: containers: - name: podexample image: centos command: ["/bin/bash", "-c", "sleep INF"] securityContext: runAsUser: 2000 runAsGroup: 3000 allowPrivilegeEscalation: false capabilities: drop: ["ALL"] securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault
apiVersion: v1 kind: Pod metadata: name: allmultipod namespace: default annotations: k8s.v1.cni.cncf.io/networks: setallmulti
1 spec: containers: - name: podexample image: centos command: ["/bin/bash", "-c", "sleep INF"] securityContext: runAsUser: 2000
2 runAsGroup: 3000
3 allowPrivilegeEscalation: false
4 capabilities:
5 drop: ["ALL"] securityContext: runAsNonRoot: true
6 seccompProfile:
7 type: RuntimeDefault
- 1
- 設定された
NetworkAttachmentDefinition
の名前を指定します。 - 2
- コンテナーの実行に使用するユーザー ID を指定します。
- 3
- コンテナーの実行に使用するプライマリーグループ ID を指定します。
- 4
- Pod が権限昇格を要求できるか指定します。指定しない場合、デフォルトで
true
に設定されます。このブール値は、no_new_privs
フラグがコンテナープロセスに設定されるかどうかを直接制御します。 - 5
- コンテナーのケイパビリティーを指定します。
drop: ["ALL"]
ステートメントは、すべての Linux ケイパビリティーが Pod からドロップされ、より制限的なセキュリティープロファイルが提供されていることを示します。 - 6
- UID が 0 以外のユーザーでコンテナーが実行されるように指定します。
- 7
- コンテナーの seccomp プロファイルを指定します。この場合、タイプは
RuntimeDefault
に設定されます。Seccomp は、プロセスで使用できるシステムコールを制限し、攻撃対象領域を最小化してセキュリティーを強化する Linux カーネル機能です。
次のコマンドを実行して、YAML ファイルで指定された設定を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f examplepod.yaml
$ oc apply -f examplepod.yaml
次のコマンドを実行して、Pod が作成されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod
$ oc get pod
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE allmultipod 1/1 Running 0 23s
NAME READY STATUS RESTARTS AGE allmultipod 1/1 Running 0 23s
次のコマンドを実行して、Pod にログインします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsh allmultipod
$ oc rsh allmultipod
次のコマンドを実行して、Pod に関連付けられているすべてのインターフェイスをリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ip link
sh-4.4# ip link
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8901 qdisc noqueue state UP mode DEFAULT group default link/ether 0a:58:0a:83:00:10 brd ff:ff:ff:ff:ff:ff link-netnsid 0 3: net1@if24: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default link/ether ee:9b:66:a4:ec:1d brd ff:ff:ff:ff:ff:ff link-netnsid 0
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8901 qdisc noqueue state UP mode DEFAULT group default link/ether 0a:58:0a:83:00:10 brd ff:ff:ff:ff:ff:ff link-netnsid 0
1 3: net1@if24: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default link/ether ee:9b:66:a4:ec:1d brd ff:ff:ff:ff:ff:ff link-netnsid 0
2