14.5.11. 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
集群网络供应商,如 OpenShift SDN 或 OVN-Kubernetes。

您可以通过在名为 cluster 的 CNO 对象中设置 defaultNetwork 对象的字段来为集群指定集群网络供应商配置。

14.5.11.1. Cluster Network Operator 配置对象

Cluster Network Operator(CNO)的字段在下表中描述:

表 14.47. Cluster Network Operator 配置对象

字段类型描述

metadata.name

字符串

CNO 对象的名称。这个名称始终是 cluster

spec.clusterNetwork

数组

用于指定从哪些 IP 地址块分配 Pod IP 地址以及分配给集群中每个节点的子网前缀长度的列表。例如:

spec:
  clusterNetwork:
  - cidr: 10.128.0.0/19
    hostPrefix: 23
  - cidr: 10.128.32.0/19
    hostPrefix: 23

此值是只读的,并在 install-config.yaml 文件中指定。

spec.serviceNetwork

数组

服务的 IP 地址块。OpenShift SDN 和 OVN-Kubernetes Container Network Interface(CNI)网络供应商只支持服务网络具有单个 IP 地址块。例如:

spec:
  serviceNetwork:
  - 172.30.0.0/14

此值是只读的,并在 install-config.yaml 文件中指定。

spec.defaultNetwork

对象

为集群网络配置 Container Network Interface(CNI)集群网络供应商。

spec.kubeProxyConfig

对象

此对象的字段指定 kube-proxy 配置。如果您使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 的配置不会起作用。

defaultNetwork 对象配置

defaultNetwork 对象的值在下表中定义:

表 14.48. defaultNetwork 对象

字段类型描述

type

字符串

OpenShiftSDNOVNKubernetes。在安装过程中选择了集群网络供应商。集群安装后无法更改这个值。

注意

OpenShift Container Platform 默认使用 OpenShift SDN Container Network Interface(CNI)集群网络供应商。

openshiftSDNConfig

对象

此对象仅对 OpenShift SDN 集群网络供应商有效。

ovnKubernetesConfig

对象

此对象仅对 OVN-Kubernetes 集群网络供应商有效。

配置 OpenShift SDN CNI 集群网络供应商

下表描述了 OpenShift SDN Container Network Interface(CNI)集群网络供应商的配置字段。

表 14.49. openshiftSDNConfig 对象

字段类型描述

mode

字符串

配置 OpenShift SDN 的网络隔离模式。默认值为 NetworkPolicy

MultitenantSubnet 的值可以向后兼容 OpenShift Container Platform 3.x,但不推荐这样做。集群安装后无法更改这个值。

mtu

整数

VXLAN 覆盖网络的最大传输单元 (MTU) 。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。

如果自动探测的值不是您期望的,请确认节点上主网络接口中的 MTU 是正确的。您不能使用这个选项更改节点上主网络接口的 MTU 值。

如果您的集群中的不同节点需要不同的 MTU 值,则必须将此值设置为比集群中的最低 MTU 值小 50。例如,如果集群中的某些节点的 MTU 为 9001,而某些节点的 MTU 为 1500,则必须将此值设置为 1450

集群安装后无法更改这个值。

vxlanPort

整数

用于所有 VXLAN 数据包的端口。默认值为 4789。集群安装后无法更改这个值。

如果您在虚拟环境中运行,并且现有节点是另一个 VXLAN 网络的一部分,那么可能需要更改此值。例如,当在 VMware NSX-T 上运行 OpenShift SDN 覆盖时,您必须为 VXLAN 选择一个备用端口,因为两个 SDN 都使用相同的默认 VXLAN 端口号。

在 Amazon Web Services (AWS) 上,您可以在端口 9000 和端口 9999 之间为 VXLAN 选择一个备用端口。

OpenShift SDN 配置示例

defaultNetwork:
  type: OpenShiftSDN
  openshiftSDNConfig:
    mode: NetworkPolicy
    mtu: 1450
    vxlanPort: 4789

配置 OVN-Kubernetes CNI 集群网络供应商

下表描述了 OVN-Kubernetes CNI 集群网络供应商的配置字段。

表 14.50. ovnKubernetesConfig 对象

字段类型描述

mtu

整数

Geneve(Generic Network Virtualization Encapsulation)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。

如果自动探测的值不是您期望的,请确认节点上主网络接口中的 MTU 是正确的。您不能使用这个选项更改节点上主网络接口的 MTU 值。

如果您的集群中的不同节点需要不同的 MTU 值,则必须将此值设置为比集群中的最低 MTU 值小 100。例如,如果集群中的某些节点的 MTU 为 9001,而某些节点的 MTU 为 1500,则必须将此值设置为 1400

集群安装后无法更改这个值。

genevePort

整数

用于所有 Geneve 数据包的端口。默认值为 6081。集群安装后无法更改这个值。

ipsecConfig

对象

指定一个空对象来启用 IPsec 加密。集群安装后无法更改这个值。

OVN-Kubernetes 配置示例

defaultNetwork:
  type: OVNKubernetes
  ovnKubernetesConfig:
    mtu: 1400
    genevePort: 6081
    ipsecConfig: {}

kubeProxyConfig 对象配置

kubeProxyConfig 对象的值在下表中定义:

表 14.51. kubeProxyConfig 对象

字段类型描述

iptablesSyncPeriod

字符串

iptables 规则的刷新周期。默认值为 30s。有效的后缀包括 smh,具体参见 Go time 软件包文档

注意

由于 OpenShift Container Platform 4.3 及更高版本中引进了性能上的改进,现在不再需要调整 iptablesSyncPeriod 参数。

proxyArguments.iptables-min-sync-period

数组

刷新 iptables 规则前的最短时长。此字段确保刷新的频率不会过于频繁。有效的后缀包括 smh,具体参见 Go time 软件包。默认值为:

kubeProxyConfig:
  proxyArguments:
    iptables-min-sync-period:
    - 0s