3.8. 关于在容器网络命名空间中配置 master 接口
您可以基于 master 接口创建和管理 MAC-VLAN、IP-VLAN 和 VLAN 子接口。
3.8.1. 关于在容器网络命名空间中配置 master 接口 复制链接链接已复制到粘贴板!
您可以创建一个基于容器命名空间中的 master 接口的 MAC-VLAN、IP-VLAN 或 VLAN 子接口。您还可以在单独的网络附加定义 CRD 中作为 pod 网络配置的一部分创建 master 接口。
要使用容器命名空间 master 接口,您必须为 NetworkAttachmentDefinition CRD 的子接口配置中存在的 linkInContainer 参数指定 true。
3.8.1.1. 在 SR-IOV VF 上创建多个 VLAN 复制链接链接已复制到粘贴板!
您可以根据 SR-IOV VF 创建多个 VLAN。对于此配置,创建一个 SR-IOV 网络,然后为 VLAN 接口定义网络附加。
下图显示了在 SR-IOV VF 上创建多个 VLAN 的设置过程。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。 - 已安装 SR-IOV Network Operator。
流程
使用以下命令,创建您要部署 pod 的专用容器命名空间:
oc new-project test-namespace
$ oc new-project test-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 SR-IOV 节点策略。
创建一个
SriovNetworkNodePolicy对象,然后在sriov-node-network-policy.yaml文件中保存 YAML:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
vendor-
SR-IOV 网络设备厂商的十六进制代码。值
15b3与 Mellanox NIC 关联。 deviceIDSR-IOV 网络设备的设备十六进制代码。
注意SR-IOV 网络节点策略配置示例,使用设置
deviceType: netdevice,专为 Mellanox 网络接口卡(NIC)量身定制。
运行以下命令来应用 YAML 配置:
oc apply -f sriov-node-network-policy.yaml
$ oc apply -f sriov-node-network-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意应用 YAML 配置可能需要一些时间,因为节点重启操作。
创建 SR-IOV 网络:
如以下示例 CR 所示,为额外的二级 SR-IOV 网络附加创建
SriovNetwork自定义资源(CR)。将 YAML 保存为sriov-network-attachment.yaml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML:
oc apply -f sriov-network-attachment.yaml
$ oc apply -f sriov-network-attachment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 VLAN 二级网络。
使用以下 YAML 示例,创建一个名为
vlan100-additional-network-configuration.yaml的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
master-
VLAN 配置需要指定
master名称。您可以在 pod 的网络注解中指定名称。 linkInContainer-
必须指定
linkInContainer参数。
运行以下命令来应用 YAML 文件:
oc apply -f vlan100-additional-network-configuration.yaml
$ oc apply -f vlan100-additional-network-configuration.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用早期指定的网络创建 pod 定义。
使用以下 YAML 配置示例,创建名为
pod-a.yaml文件的文件:注意清单示例包括以下资源:
- 带有安全标签的命名空间
- 带有适当的网络注解的 Pod 定义
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
interface-
用作 VLAN 接口
主接口的名称。
运行以下命令来应用 YAML 文件:
oc apply -f pod-a.yaml
$ oc apply -f pod-a.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,在
test-namespace中获取nginx-pod的详细信息:oc describe pods nginx-pod -n test-namespace
$ oc describe pods nginx-pod -n test-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.8.1.2. 基于容器命名空间中的网桥主接口创建子接口 复制链接链接已复制到粘贴板!
您可以根据容器命名空间中的桥接 master 接口创建子接口。创建子接口可应用到其他类型的接口。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin权限的用户身份登录 OpenShift Container Platform 集群。
流程
输入以下命令,创建一个要部署 pod 的专用容器命名空间:
oc new-project test-namespace
$ oc new-project test-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 YAML 配置示例,创建一个名为
bridge-nad.yaml的桥接NetworkAttachmentDefinition自定义资源定义(CRD)文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
NetworkAttachmentDefinitionCRD 应用到 OpenShift Container Platform 集群:oc apply -f bridge-nad.yaml
$ oc apply -f bridge-nad.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令验证您是否已成功创建了
NetworkAttachmentDefinitionCRD。预期输出显示 NAD CRD 的名称和创建年龄(以分钟为单位)。oc get network-attachment-definitions
$ oc get network-attachment-definitionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 YAML 示例,为 IPVLAN 二级网络配置创建一个名为
ipvlan-additional-network-configuration.yaml的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
master- 指定要与网络附加关联的以太网接口。之后,以太网接口会在 pod 网络注解中配置。
linkInContainer-
指定容器网络命名空间中存在
master接口。
运行以下命令来应用 YAML 文件:
oc apply -f ipvlan-additional-network-configuration.yaml
$ oc apply -f ipvlan-additional-network-configuration.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
NetworkAttachmentDefinitionCRD 是否已成功创建。预期输出显示 NAD CRD 的名称和创建年龄(以分钟为单位)。oc get network-attachment-definitions
$ oc get network-attachment-definitionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 YAML 配置示例,为 pod 定义创建一个名为
pod-a.yaml的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
k8s.v1.cni.cncf.io/networks,interface-
指定用作 IPVLAN 接口的
master的名称。
运行以下命令来应用 YAML 文件:
oc apply -f pod-a.yaml
$ oc apply -f pod-a.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用以下命令验证 pod 是否正在运行:
oc get pod -n test-namespace
$ oc get pod -n test-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE pod-a 1/1 Running 0 2m36s
NAME READY STATUS RESTARTS AGE pod-a 1/1 Running 0 2m36sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,显示
test-namespace中pod-a资源的网络接口信息:oc exec -n test-namespace pod-a -- ip a
$ oc exec -n test-namespace pod-a -- ip aCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此输出显示网络接口
net2与物理接口net1关联。