5.5. OpenShift Container Platform 中的 Cluster Network Operator
Cluster Network Operator (CNO)在 OpenShift Container Platform 集群上部署和管理集群网络组件,包括在安装过程中为集群选择的 Container Network Interface (CNI) 网络插件。
5.5.1. Cluster Network Operator 复制链接链接已复制到粘贴板!
Cluster Network Operator 从 operator.openshift.io API 组实现 network API。Operator 通过使用守护进程集部署 OVN-Kubernetes 网络插件,或部署您在集群安装过程中选择的网络供应商插件。
流程
Cluster Network Operator 在安装过程中被部署为一个 Kubernetes 部署。
运行以下命令,以查看部署状态:
$ oc get -n openshift-network-operator deployment/network-operator输出示例
NAME READY UP-TO-DATE AVAILABLE AGE network-operator 1/1 1 1 56m运行以下命令,以查看 Cluster Network Operator 的状态:
$ oc get clusteroperator/network输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE network 4.16.1 True False False 50m以下字段提供有关 Operator 状态的信息:
AVAILABLE、Progressing和DEGRADED。当 Cluster Network Operator 报告可用状态条件时,AVAILABLE字段为True。
5.5.2. 查看集群网络配置 复制链接链接已复制到粘贴板!
每个 OpenShift Container Platform 新安装都有一个名为 cluster 的 network.config 对象。
流程
使用
oc describe命令查看集群网络配置:$ oc describe network.config/cluster输出示例
Name: cluster Namespace: Labels: <none> Annotations: <none> API Version: config.openshift.io/v1 Kind: Network Metadata: Self Link: /apis/config.openshift.io/v1/networks/cluster Spec:1 Cluster Network: Cidr: 10.128.0.0/14 Host Prefix: 23 Network Type: OVNKubernetes Service Network: 172.30.0.0/16 Status:2 Cluster Network: Cidr: 10.128.0.0/14 Host Prefix: 23 Cluster Network MTU: 8951 Network Type: OVNKubernetes Service Network: 172.30.0.0/16 Events: <none>
5.5.3. 查看 Cluster Network Operator 状态 复制链接链接已复制到粘贴板!
您可以使用 oc describe 命令来检查状态并查看 Cluster Network Operator 的详情。
流程
运行以下命令,以查看 Cluster Network Operator 的状态:
$ oc describe clusteroperators/network
5.5.4. 全局启用 IP 转发 复制链接链接已复制到粘贴板!
从 OpenShift Container Platform 4.14 开始,基于 OVN-Kubernetes 的集群部署禁用了全局 IP 地址转发,以防止集群管理员对作为路由器的节点造成不必要的影响。但是,在某些情况下,管理员希望转发一个新的配置参数 ipForwarding 来允许转发所有 IP 流量。
要为 OVN-Kubernetes 受管接口上的所有流量重新启用 IP 转发,请按照以下流程将 Cluster Network Operator 中的 gatewayConfig.ipForwarding 规格设置为 Global :
流程
运行以下命令备份现有网络配置:
$ oc get network.operator cluster -o yaml > network-config-backup.yaml运行以下命令修改现有的网络配置:
$ oc edit network.operator cluster在
spec中添加或更新以下块,如下例所示:spec: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 serviceNetwork: - 172.30.0.0/16 networkType: OVNKubernetes clusterNetworkMTU: 8900 defaultNetwork: ovnKubernetesConfig: gatewayConfig: ipForwarding: Global- 保存并关闭该文件。
应用更改后,OpenShift Cluster Network Operator (CNO) 在集群中应用更新。您可以使用以下命令监控进度:
$ oc get clusteroperators network状态最终应报告为
Available,Progressing=False, 和Degraded=False。另外,您可以运行以下命令来全局启用 IP 转发:
$ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge注意当您要恢复此更改时,此参数的其他有效选项为
Restricted。restricted是默认设置,并且禁用设置全局 IP 地址转发。
5.5.5. 查看 Cluster Network Operator 日志 复制链接链接已复制到粘贴板!
您可以使用 oc logs 命令来查看 Cluster Network Operator 日志。
流程
运行以下命令,以查看 Cluster Network Operator 的日志:
$ oc logs --namespace=openshift-network-operator deployment/network-operator
5.5.6. Cluster Network Operator 配置 复制链接链接已复制到粘贴板!
集群网络的配置作为 Cluster Network Operator(CNO)配置的一部分指定,并存储在名为 cluster 的自定义资源(CR)对象中。CR 指定 operator.openshift.io API 组中的 Network API 的字段。
CNO 配置在集群安装过程中从 Network.config.openshift.io API 组中的 Network API 继承以下字段:
clusterNetwork- 从中分配 Pod IP 地址的 IP 地址池。
serviceNetwork- 服务的 IP 地址池.
defaultNetwork.type-
集群网络插件。
OVNKubernetes是安装期间唯一支持的插件。
在集群安装后,您只能修改 clusterNetwork IP 地址范围。默认网络类型只能通过迁移从 OpenShift SDN 改为 OVN-Kubernetes。
您可以通过在名为 cluster 的 CNO 对象中设置 defaultNetwork 对象的字段来为集群指定集群网络插件配置。
5.5.6.1. Cluster Network Operator 配置对象 复制链接链接已复制到粘贴板!
下表中描述了 Cluster Network Operator(CNO)的字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
CNO 对象的名称。这个名称始终是 |
|
|
| 用于指定从哪些 IP 地址块分配 Pod IP 地址以及集群中每个节点的子网前缀长度的列表。例如:
|
|
|
| 服务的 IP 地址块。OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。例如:
此值是只读的,在集群安装过程中从名为 |
|
|
| 为集群网络配置网络插件。 |
|
|
| 此对象的字段指定 kube-proxy 配置。如果使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 配置不会起作用。 |
对于需要在多个网络间部署对象的集群,请确保为 install-config.yaml 文件中定义的每种网络类型指定与 clusterNetwork.hostPrefix 参数相同的值。为每个 clusterNetwork.hostPrefix 参数设置不同的值可能会影响 OVN-Kubernetes 网络插件,其中插件无法有效地在不同节点间路由对象流量。
5.5.6.1.1. defaultNetwork 对象配置 复制链接链接已复制到粘贴板!
下表列出了 defaultNetwork 对象的值:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
注意 OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。OpenShift SDN 不再作为新集群的安装选择提供。 |
|
|
| 此对象仅对 OVN-Kubernetes 网络插件有效。 |
5.5.6.1.1.1. 配置 OpenShift SDN 网络插件 复制链接链接已复制到粘贴板!
下表描述了 OpenShift SDN 网络插件的配置字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
| OpenShift SDN 的网络隔离模式。 |
|
|
| VXLAN 覆盖网络的最大传输单元(MTU)。这个值通常是自动配置的。 |
|
|
|
用于所有 VXLAN 数据包的端口。默认值为 |
OpenShift SDN 配置示例
defaultNetwork:
type: OpenShiftSDN
openshiftSDNConfig:
mode: NetworkPolicy
mtu: 1450
vxlanPort: 4789
5.5.6.1.1.2. 配置 OVN-Kubernetes 网络插件 复制链接链接已复制到粘贴板!
下表描述了 OVN-Kubernetes 网络插件的配置字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
| Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这个值通常是自动配置的。 |
|
|
| Geneve 覆盖网络的 UDP 端口。 |
|
|
| 用于描述集群的 IPsec 模式的对象。 |
|
|
| 为 IPv4 设置指定配置对象。 |
|
|
| 为 IPv6 设置指定配置对象。 |
|
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
|
|
|
可选:指定一个配置对象来自定义如何将出口流量发送到节点网关。有效值为 注意 在迁移出口流量时,工作负载和服务流量会受到一定影响,直到 Cluster Network Operator (CNO) 成功推出更改。 |
| 字段 | 类型 | 描述 |
|---|---|---|
|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
| 字段 | 类型 | 描述 |
|---|---|---|
|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
| 字段 | 类型 | 描述 |
|---|---|---|
|
| 整数 |
每个节点每秒生成一次的消息数量上限。默认值为每秒 |
|
| 整数 |
审计日志的最大大小,以字节为单位。默认值为 |
|
| 整数 | 保留的日志文件的最大数量。 |
|
| 字符串 | 以下附加审计日志目标之一:
|
|
| 字符串 |
syslog 工具,如 as |
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
将此字段设置为
此字段与 Open vSwitch 硬件卸载功能有交互。如果将此字段设置为 |
|
|
|
您可以使用 |
|
|
| 可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv4 地址的流量。 |
|
|
| 可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv6 地址的流量。 |
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
内部使用的伪装 IPv4 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 |
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
内部使用的伪装 IPv6 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 |
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
| 指定 IPsec 实现的行为。必须是以下值之一:
|
您只能在集群安装过程中更改集群网络插件的配置,但 gatewayConfig 字段可作为安装后活动在运行时更改。
启用 IPSec 的 OVN-Kubernetes 配置示例
defaultNetwork:
type: OVNKubernetes
ovnKubernetesConfig:
mtu: 1400
genevePort: 6081
ipsecConfig:
mode: Full
使用 OVNKubernetes 可能会导致 IBM Power® 上的堆栈耗尽问题。
5.5.6.1.2. kubeProxyConfig 对象配置(仅限 OpenShiftSDN 容器网络接口) 复制链接链接已复制到粘贴板!
kubeProxyConfig 对象的值在下表中定义:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
注意
由于 OpenShift Container Platform 4.3 及更高版本中引进了性能改进,不再需要调整 |
|
|
|
刷新
|
5.5.6.2. Cluster Network Operator 配置示例 复制链接链接已复制到粘贴板!
以下示例中指定了完整的 CNO 配置:
Cluster Network Operator 对象示例
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
serviceNetwork:
- 172.30.0.0/16
networkType: OVNKubernetes