4.5. 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 对象的字段来为集群指定集群网络供应商配置。

4.5.1. Cluster Network Operator 配置对象

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

表 4.1. Cluster Network Operator 配置对象

字段类型描述

metadata.name

字符串

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

spec.clusterNetwork

array

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

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

此值是只读的,在集群安装过程中从名为 clusterNetwork.config.openshift.io 对象继承。

spec.serviceNetwork

array

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

spec:
  serviceNetwork:
  - 172.30.0.0/14

此值是只读的,在集群安装过程中从名为 clusterNetwork.config.openshift.io 对象继承。

spec.defaultNetwork

object

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

spec.kubeProxyConfig

object

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

defaultNetwork 对象配置

下表列出了 defaultNetwork 对象的值:

表 4.2. defaultNetwork 对象

字段类型描述

type

字符串

OpenShiftSDNOVNKubernetes。集群网络供应商是在安装过程中选择的。此值在集群安装后无法更改。

注意

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

openshiftSDNConfig

object

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

ovnKubernetesConfig

object

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

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

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

表 4.3. openshiftSDNConfig object

字段类型描述

模式

字符串

OpenShift SDN 的网络隔离模式。

mtu

integer

VXLAN 覆盖网络的最大传输单元(MTU)。这个值通常是自动配置的。

vxlanPort

integer

用于所有 VXLAN 数据包的端口。默认值为 4789

注意

您只能在集群安装过程中更改集群网络供应商的配置。

OpenShift SDN 配置示例

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

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

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

表 4.4. ovnKubernetesConfig object

字段类型描述

mtu

integer

Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这个值通常是自动配置的。

genevePort

整数

Geneve 覆盖网络的 UDP 端口。

ipsecConfig

对象

如果存在该字段,则会为集群启用 IPsec。

policyAuditConfig

object

指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。

表 4.5. policyAuditConfig object

字段类型描述

rateLimit

整数

每个节点每秒生成一次的消息数量上限。默认值为每秒 20 条消息。

maxFileSize

整数

审计日志的最大大小,以字节为单位。默认值为 50000000 或 50 MB。

目的地

字符串

以下附加审计日志目标之一:

libc
主机上的 journald 进程的 libc syslog() 函数。
UDP:<host>:<port>
一个 syslog 服务器。将 <host>:<port> 替换为 syslog 服务器的主机 和端口。
Unix:<file>
<file> 指定的 Unix 域套接字文件。
null
不要将审计日志发送到任何其他目标。

syslogFacility

字符串

syslog 工具,如 as kern,如 RFC5424 定义。默认值为 local0。

注意

您只能在集群安装过程中更改集群网络供应商的配置。

OVN-Kubernetes 配置示例

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

kubeProxyConfig object configuration

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

表 4.6. kubeProxyConfig object

字段类型描述

iptablesSyncPeriod

字符串

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

注意

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

proxyArguments.iptables-min-sync-period

array

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

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

4.5.2. Cluster Network Operator 配置示例

以下示例中指定了完整的 CNO 配置:

Cluster Network Operator 对象示例

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  clusterNetwork: 1
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  serviceNetwork: 2
  - 172.30.0.0/16
  defaultNetwork: 3
    type: OpenShiftSDN
    openshiftSDNConfig:
      mode: NetworkPolicy
      mtu: 1450
      vxlanPort: 4789
  kubeProxyConfig:
    iptablesSyncPeriod: 30s
    proxyArguments:
      iptables-min-sync-period:
      - 0s

1 2 3
仅在集群安装过程中配置。