16.2. 使用调优 CNI 启用 all-multicast 模式
您可以使用 tuning Container Network Interface (CNI) meta 插件启用 all-multicast 模式。
以下流程描述了如何配置调优 CNI 来启用 all-multicast 模式。
流程
使用以下内容创建网络附加定义,如
tuning-example.yaml
: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 } } ] }
下面显示了一个 YAML 文件示例:
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 文件中指定的设置:
$ oc apply -f tuning-allmulti.yaml
输出示例
networkattachmentdefinition.k8s.cni.cncf.io/setallmulti created
使用类似以下
examplepod.yaml
文件中指定的网络附加定义创建 pod :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 配置集。在这种情况下,type 被设置为
RuntimeDefault
。seccomp 是一个 Linux 内核功能,它限制了进程可用的系统调用,通过最小化攻击面来提高安全性。
运行以下命令应用 YAML 文件中指定的设置:
$ oc apply -f examplepod.yaml
运行以下命令验证 pod 是否已创建:
$ oc get pod
输出示例
NAME READY STATUS RESTARTS AGE allmultipod 1/1 Running 0 23s
运行以下命令登录到 pod:
$ oc rsh allmultipod
运行以下命令,列出与 pod 关联的所有接口:
sh-4.4# ip link
输出示例
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