3.8. 关于在容器网络命名空间中配置 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 接口定义网络附加。
以下示例演示了如何配置此图中所示的设置。
图 3.1. 创建 VLAN
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 SR-IOV Network Operator。
流程
使用以下命令,创建您要部署 pod 的专用容器命名空间:
oc new-project test-namespace
$ oc new-project test-namespace
Copy 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 注意SR-IOV 网络节点策略配置示例,使用设置
deviceType: netdevice
,专为 Mellanox 网络接口卡(NIC)量身定制。运行以下命令来应用 YAML:
oc apply -f sriov-node-network-policy.yaml
$ oc apply -f sriov-node-network-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意应用这可能需要一些时间,因为需要重新引导的节点。
创建 SR-IOV 网络:
为二级 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 VLAN 二级网络:
使用以下 YAML 示例,创建一个名为
vlan100-additional-network-configuration.yaml
的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f vlan100-additional-network-configuration.yaml
$ oc apply -f vlan100-additional-network-configuration.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用之前指定的网络创建 pod 定义:
使用以下 YAML 示例,创建一个名为
pod-a.yaml
文件的文件:注意以下清单包括 2 个资源:
- 带有安全标签的命名空间
- 带有适当的网络注解的 Pod 定义
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 用作 VLAN 接口的
master
的名称。
运行以下命令来应用 YAML 文件:
oc apply -f pod-a.yaml
$ oc apply -f pod-a.yaml
Copy 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-namespace
Copy 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-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 YAML 示例,创建一个名为
bridge-nad.yaml
的桥接NetworkAttachmentDefinition
自定义资源定义 (CRD) 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
NetworkAttachmentDefinition
CRD 应用到 OpenShift Container Platform 集群:oc apply -f bridge-nad.yaml
$ oc apply -f bridge-nad.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令验证您是否已成功创建了
NetworkAttachmentDefinition
CRD。预期输出显示 NAD CRD 的名称并创建期限(以分钟为单位)。oc get network-attachment-definitions
$ oc get network-attachment-definitions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 YAML 示例,为 IPVLAN 二级网络配置创建一个名为
ipvlan-additional-network-configuration.yaml
的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f ipvlan-additional-network-configuration.yaml
$ oc apply -f ipvlan-additional-network-configuration.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
NetworkAttachmentDefinition
CRD 是否已成功创建。预期输出显示 NAD CRD 的名称并创建期限(以分钟为单位)。oc get network-attachment-definitions
$ oc get network-attachment-definitions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 YAML 示例,为 pod 定义创建一个名为
pod-a.yaml
的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定用作 IPVLAN 接口的
master
的名称。
运行以下命令来应用 YAML 文件:
oc apply -f pod-a.yaml
$ oc apply -f pod-a.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令验证 pod 是否正在运行:
oc get pod -n test-namespace
$ oc get pod -n test-namespace
Copy 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 2m36s
Copy 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 a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此输出显示网络接口
net2
与物理接口net1
关联。