第 3 章 二级网络
3.1. 在 OVN-Kubernetes 上创建二级网络 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用 NetworkAttachmentDefinition
(NAD) 资源为集群配置二级网络。
以后的 OpenShift Container Platform 版本中将添加对用户定义的网络作为二级网络的支持。
3.1.1. 配置 OVN-Kubernetes 二级网络 复制链接链接已复制到粘贴板!
Red Hat OpenShift Networking OVN-Kubernetes 网络插件允许为 pod 配置二级网络接口。要配置二级网络接口,您必须在 NetworkAttachmentDefinition
自定义资源定义 (CRD)中定义配置。
Pod 和多网络策略创建可能会处于待处理状态,直到节点的 OVN-Kubernetes control plane 代理处理了关联的 network-attachment-definition
CRD。
您可以在第 2 层、第 3 层或 localnet 拓扑中配置 OVN-Kubernetes 二级网络。有关这些拓扑支持的功能的更多信息,请参阅"UserDefinedNetwork 和 NetworkAttachmentDefinition 支持列表"。
以下小节提供了 OVN-Kubernetes 当前允许从属网络的每个拓扑配置示例。
网络名称必须是唯一的。例如,不支持使用多个带有不同配置的 NetworkAttachmentDefinition
CRD。
3.1.1.1. OVN-Kubernetes 二级网络支持的平台 复制链接链接已复制到粘贴板!
您可以在以下支持的平台中使用 OVN-Kubernetes 二级网络:
- 裸机
- IBM Power®
- IBM Z®
- IBM® LinuxONE
- VMware vSphere
- Red Hat OpenStack Platform (RHOSP)
3.1.1.2. OVN-Kubernetes 网络插件 JSON 配置表 复制链接链接已复制到粘贴板!
下表描述了 OVN-Kubernetes CNI 网络插件的配置参数:
字段 | 类型 | 描述 |
---|---|---|
|
|
CNI 规格版本。所需的值为 |
|
|
网络的名称。这些网络不是命名空间。例如,名为 |
|
|
用于配置的 CNI 插件的名称。这个值必须设置为 |
|
|
网络的拓扑配置。必须是 |
|
| 用于集群间的网络的子网。
对于 在省略时,实现网络的逻辑交换机仅提供第 2 层通信,用户必须为 pod 配置 IP 地址。端口安全只阻止 MAC 欺骗。 |
|
| 最大传输单元 (MTU)。如果没有设置值,Cluster Network Operator (CNO)通过计算主网络接口中的 underlay MTU 的不同来设置默认的 MTU 值,如 pod 网络的 overlay MTU,如 Geneve (Generic Network Virtualization Encapsulation),以及任何启用的功能(如 IPsec)的字节容量。 |
|
|
包含此配置的网络附加定义 CRD 的元数据 |
|
| 以逗号分隔的 CIDR 和 IP 地址列表。IP 地址从可分配的 IP 地址池中删除,永远不会传递给 pod。 |
|
|
如果拓扑设置为 |
|
|
如果拓扑设置为 |
3.1.1.3. 与多网络策略兼容 复制链接链接已复制到粘贴板!
多网络策略 API 由 k8s.cni.cncf.io
API 组中的 MultiNetworkPolicy
自定义资源定义(CRD) 提供,与 OVN-Kubernetes 二级网络兼容。在定义网络策略时,可以使用的网络策略规则取决于 OVN-Kubernetes 二级网络是否定义了 subnets
字段。详情请查看下表:
指定的 subnets 字段 | 允许多网络策略选择器 |
---|---|
是 |
|
否 |
|
您可以使用 MultiNetworkPolicy
对象上的 k8s.v1.cni.cncf.io/policy-for
注解指向 NetworkAttachmentDefinition
(NAD) 自定义资源(CR)。NAD CR 定义策略应用到的网络。只有在名为 blue2
的二级网络 CNI 配置中定义了 subnets
字段时,以下多网络策略才有效:
使用 pod 选择器的多网络策略示例
以下示例使用 ipBlock
网络策略选择器,它始终对 OVN-Kubernetes 二级网络有效:
使用 IP 块选择器的多网络策略示例
3.1.1.4. localnet 交换拓扑的配置 复制链接链接已复制到粘贴板!
交换的 localnet
拓扑通过集群范围的逻辑切换到物理网络来连接作为网络附加定义 (NAD) 创建的工作负载。
您必须将二级网络映射到 ovs-bridge,才能将其用作 OVN-Kubernetes 二级网络。网桥映射允许网络流量访问物理网络。网桥映射将物理网络名称(也称为接口标签)与通过 Open vSwitch (OVS)创建的网桥相关联。
您可以创建一个 NodeNetworkConfigurationPolicy
(NNCP) 对象( nmstate.io/v1
API 组的一部分),以声明性地创建映射。此 API 由 NMState Operator 提供。通过使用此 API,您可以将网桥映射应用到与指定 nodeSelector
表达式匹配的节点,如 node-role.kubernetes.io/worker: ''
。使用这个声明方法,NMState Operator 会自动和透明地将二级网络配置应用到节点选择器指定的所有节点。
在附加二级网络时,您可以使用现有的 br-ex
网桥或创建新网桥。使用哪种方法取决于您的特定网络基础架构。请考虑以下方法:
-
如果您的节点只包含一个网络接口,则必须使用现有的网桥。这个网络接口由 OVN-Kubernetes 拥有和管理,不得从
br-ex
网桥中删除它,或更改接口配置。如果您删除或更改网络接口,您的集群网络将停止工作。 - 如果您的节点包含多个网络接口,您可以将不同的网络接口附加到新网桥,并将该网络接口用于二级网络。这种方法可用于从主集群网络进行流量隔离。
localnet1
网络在以下示例中映射到 br-ex
网桥:
共享网桥的映射示例
- 1 1
- 配置对象的名称。
- 2
- 节点选择器指定要将节点网络配置策略应用到的节点。
- 3
- 流量转发到 OVS 网桥的二级网络的名称。此二级网络必须与定义 OVN-Kubernetes 额外网络的
NetworkAttachmentDefinition
CRD 的spec.config.name
字段的名称匹配。 - 4
- 节点上的 OVS 网桥的名称。只有在指定
state: present
时,才需要这个值。 - 5
- 映射的状态。需要是
present
(添加网桥)或absent
(删除网桥)。默认值存在
。以下 JSON 示例配置了一个名为
localnet1
的 localnet 二级网络。请注意,mtu
参数的值必须与映射到br-ex
网桥接口的二级网络接口设置的 MTU 值匹配。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在以下示例中,localnet2
网络接口连接到 ovs-br1
网桥。通过此附加,网络接口作为二级网络可用于 OVN-Kubernetes 网络插件。
具有多个接口的节点映射示例
- 1
- 指定配置对象的名称。
- 2
- 指定用于标识节点网络配置策略应用到的节点的节点选择器。
- 3
- 指定一个新的 OVS 网桥,与 OVN-Kubernetes 用于集群流量的默认网桥分开运行。
- 4
- 指定是否启用多播侦听。启用后,多播侦听可防止网络设备向所有网络成员填充多播流量。默认情况下,OVS 网桥不启用多播侦听。默认值为
false
。 - 5
- 指定主机系统上要与新的 OVS 网桥关联的网络设备。
- 6
- 指定将流量转发到 OVS 网桥的二级网络的名称。此名称必须与定义 OVN-Kubernetes 二级网络的
NetworkAttachmentDefinition
CRD 中的spec.config.name
字段的值匹配。 - 7
- 指定节点上的 OVS 网桥的名称。只有在设置了
state: present
时,才需要该值。 - 8
- 指定映射的状态。有效的值是
present
- 添加网桥;或absent
- 删除网桥。默认值存在
。以下 JSON 示例配置了一个名为
localnet2
的 localnet 二级网络:请注意,mtu
参数的值必须与为eth1
二级网络接口设置的 MTU 值匹配。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.1.4.1. 配置第 2 层切换拓扑 复制链接链接已复制到粘贴板!
交换机(层 2)拓扑网络通过集群范围的逻辑交换机互连工作负载。此配置可用于 IPv6 和双栈部署。
第 2 层切换拓扑网络只允许在集群中的 pod 间传输数据数据包。
以下 JSON 示例配置交换的二级网络:
3.1.1.5. 为二级网络配置 pod 复制链接链接已复制到粘贴板!
您必须通过 k8s.v1.cni.cncf.io/networks
注解来指定二级网络附加。
以下示例置备有两个二级附件的 pod,一个用于本指南中提供的每个附加配置。
3.1.1.6. 使用静态 IP 地址配置 pod 复制链接链接已复制到粘贴板!
以下示例使用静态 IP 地址置备一个 pod。
- 只有在二级网络附加(命名空间范围的对象)使用第 2 层或 localnet 拓扑时,您可以为 pod 的二级网络附加指定 IP 地址。
- 只有在附加配置没有功能子网时,才能为 pod 指定静态 IP 地址。