24.9. 为 VRF 分配从属网络
作为集群管理员,您可以使用 CNI VRF 插件为虚拟路由和转发 (VRF) 域配置额外网络。此插件创建的虚拟网络与您指定的物理接口关联。
使用带有 VRF 实例的二级网络有以下优点:
- 工作负载隔离
- 通过为额外网络配置 VRF 实例来隔离工作负载流量。
- 提高了安全性
- 通过 VRF 域中的隔离网络路径启用更高的安全性。
- 多租户支持
- 通过网络分段支持每个租户的 VRF 域中唯一路由表的多租户。
使用 VRF 的应用程序必须绑定到特定设备。通常的用法是在套接字中使用 SO_BINDTODEVICE
选项。SO_BINDTODEVICE
选项将套接字绑定到在传递接口名称中指定的设备,如 eth1
。要使用 SO_BINDTODEVICE
选项,应用程序必须具有 CAP_NET_RAW
功能。
OpenShift Container Platform pod 不支持通过 ip vrf exec
命令使用 VRF。要使用 VRF,将应用程序直接绑定到 VRF 接口。
24.9.1. 使用 CNI VRF 插件创建额外网络附加 复制链接链接已复制到粘贴板!
Cluster Network Operator (CNO) 管理额外网络定义。当您指定要创建的额外网络时,CNO 会自动创建 NetworkAttachmentDefinition
自定义资源(CR)。
请勿编辑 Cluster Network Operator 所管理的 NetworkAttachmentDefinition
CR。这样做可能会破坏额外网络上的网络流量。
要使用 CNI VRF 插件创建额外网络附加,请执行以下步骤。
先决条件
- 安装 OpenShift Container Platform CLI(oc)。
- 以具有 cluster-admin 权限的用户身份登录 OpenShift 集群。
流程
为额外网络附加创建
Network
自定义资源 (CR),并为额外网络插入rawCNIConfig
配置,如下例所示。将 YAML 保存为文件additional-network-attachment.yaml
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意只有在资源类型为
netdevice
时,VRF 才能正常工作。创建
Network
资源:oc create -f additional-network-attachment.yaml
$ oc create -f additional-network-attachment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过运行以下命令确认 CNO 创建了
NetworkAttachmentDefinition
CR。将<namespace>
替换为您在配置网络附加时指定的命名空间,如additional-network-1
。oc get network-attachment-definitions -n <namespace>
$ oc get network-attachment-definitions -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE additional-network-1 14m
NAME AGE additional-network-1 14m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意CNO 创建 CR 之前可能会有延迟。
验证
创建 pod,并使用 VRF 实例将其分配给额外网络:
创建定义
Pod
资源的 YAML 文件:pod-additional-net.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用 VRF 实例指定额外网络的名称。
运行以下命令来创建
Pod
资源:oc create -f pod-additional-net.yaml
$ oc create -f pod-additional-net.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
pod/test-pod created
pod/test-pod created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证 Pod 网络附加是否已连接到 VRF 额外网络。使用 pod 启动远程会话并运行以下命令:
ip vrf show
$ ip vrf show
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Name Table ----------------------- vrf-1 1001
Name Table ----------------------- vrf-1 1001
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认 VRF 接口是额外接口的控制器:
ip link
$ ip link
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode
5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode
Copy to Clipboard Copied! Toggle word wrap Toggle overflow