第 1 章 关于 OVN-Kubernetes 网络插件
OVN-Kubernetes Container Network Interface (CNI)插件是 MicroShift 集群的默认网络解决方案。OVN-Kubernetes 是 pod 和基于 Open Virtual Network (OVN) 的服务的虚拟网络。
-
默认网络配置和连接会在 MicroShift 中在安装过程中自动应用
microshift-networking
RPM。 - 使用 OVN-Kubernetes 网络插件的集群也会在节点上运行 Open vSwitch (OVS)。
- OVN-K 在节点上配置 OVS,以实施声明的网络配置。
-
默认情况下,主机物理接口不绑定到 OVN-K 网关网桥
br-ex
。您可以使用主机上的标准工具来管理默认网关,如 Network Manager CLI (nmcli
)。 - MicroShift 不支持更改 CNI。
使用配置文件或自定义脚本,您可以配置以下网络设置:
- 您可以使用子网 CIDR 范围为 pod 分配 IP 地址。
- 您可以更改最大传输单元(MTU)值。
- 您可以配置防火墙入口和出口。
- 您可以在 MicroShift 集群中定义网络策略,包括入口和出口规则。
- 您可以使用 MicroShift Multus 插件串联其他 CNI 插件。
- 您可以配置或删除入口路由器。
1.1. MicroShift 网络配置列表
下表总结了作为默认值、配置支持或未通过 MicroShift 服务提供的网络功能和功能的状态:
网络功能 | 可用性 | 支持配置 |
---|---|---|
公告地址 | 是 | 是 [1] |
Kubernetes 网络策略 | 是 | 是 |
Kubernetes 网络策略日志 | 不可用 | N/A |
负载平衡 | 是 | 是 |
多播 DNS | 是 | 是 [2] |
网络代理 | 是 [3] | CRI-O |
网络性能 | 是 | MTU 配置 |
出口 IP | 不可用 | N/A |
出口防火墙 | 不可用 | N/A |
出口路由器 | 不可用 | N/A |
防火墙 | 没有 [4] | 是 |
硬件卸载 | 不可用 | N/A |
混合网络 | 不可用 | N/A |
集群内通信的 IPsec 加密 | 不可用 | N/A |
IPv6 | 不可用 [5] | N/A |
入口路由器 | 是 | 是 [6] |
多个网络插件 | 是 | 是 |
-
如果未设置,则默认值会在服务网络后设置为下一个即时子网。例如,当服务网络为
10.43.0.0/16
时,广告地址
被设置为10.44.0.0/32
。 -
多播 DNS 协议 (mDNS) 允许使用在
5353/UDP
端口上公开的多播进行名称解析和服务发现。 - MicroShift 中没有内置透明代理的出口流量。出口必须手动配置。
- RHEL for Edge 支持设置 firewalld 服务。
- 不支持 IPv6。IPv6 只能通过 MicroShift Multus CNI 插件连接到其他网络来使用。
-
使用 MicroShift
config.yaml
文件配置。
1.1.1. 默认设置
如果没有创建 config.yaml
文件,则使用默认值。以下示例显示了默认配置设置。
要查看默认值,请运行以下命令:
$ microshift show-config
YAML 格式的默认值示例
apiServer: advertiseAddress: 10.44.0.0/32 1 auditLog: maxFileAge: 0 2 maxFileSize: 200 3 maxFiles: 10 4 profile: Default 5 namedCertificates: - certPath: "" keyPath: "" names: - "" subjectAltNames: [] 6 debugging: logLevel: "Normal" 7 dns: baseDomain: microshift.example.com 8 etcd: memoryLimitMB: 0 9 ingress: listenAddress: - "" 10 ports: 11 http: 80 https: 443 routeAdmissionPolicy: namespaceOwnership: InterNamespaceAllowed 12 status: Managed 13 manifests: 14 kustomizePaths: - /usr/lib/microshift/manifests - /usr/lib/microshift/manifests.d/* - /etc/microshift/manifests - /etc/microshift/manifests.d/* network: clusterNetwork: - 10.42.0.0/16 15 serviceNetwork: - 10.43.0.0/16 16 serviceNodePortRange: 30000-32767 17 node: hostnameOverride: "" 18 nodeIP: "" 19
- 1
- 指定 API 服务器公告给集群成员的 IP 地址的字符串。默认值根据服务网络的地址计算。
- 2
- 在自动删除前保留日志文件的时长。
maxFileAge
参数中的默认值为0
表示日志文件永远不会根据年龄删除。可以配置这个值。 - 3
- 默认情况下,当
audit.log
文件达到maxFileSize
限制时,audit.log
文件会被轮转,MicroShift 开始写入新的audit.log
文件。可以配置这个值。 - 4
- 保存的日志文件总数。默认情况下,MicroShift 保留 10 个日志文件。创建过量文件时,会删除最旧的文件。可以配置这个值。
- 5
- 仅记录读取和写入请求的日志元数据 ;除了 OAuth 访问令牌请求外,不记录请求正文。如果没有指定此字段,则使用
Default
配置集。 - 6
- API 服务器证书的主题备用名称。
- 7
- 日志详细程度。此字段的有效值为
Normal
,Debug
,Trace
, 或TraceAll
。 - 8
- 默认情况下,
etcd
根据需要使用内存来处理系统上的负载。但是,在内存限制的系统中,可能需要在给定时间限制etcd
可以使用的内存量。 - 9
- 集群的基域。所有管理的 DNS 记录都是这个基础的子域。
- 10
ingress.listenAddress
值默认为主机的整个网络。有效可配置的值是一个列表,可以是单个 IP 地址或 NIC 名称,也可以是多个 IP 地址和 NIC 名称。- 11
- 显示的默认端口。可配置。两个端口条目的有效值为 1-65535 范围内的单个唯一端口。
ports.http
和ports.https
字段的值不能相同。 - 12
- 描述如何处理跨命名空间的主机名声明。默认情况下,允许路由在命名空间间声明相同主机名的不同路径。有效值为
Strict
和InterNamespaceAllowed
。指定Strict
可防止不同命名空间中的路由声明相同的主机名。如果在自定义 MicroShiftconfig.yaml
中删除了该值,则会自动设置InterNamespaceAllowed
值。 - 13
- 默认路由器状态,可以是
Managed
或Removed
。 - 14
- 用于扫描
kustomization
文件的位置,用于加载清单。设置为仅扫描这些路径的路径列表。设置为空列表以禁用加载清单。列表中的条目可以是 glob 模式,以匹配多个子目录。 - 15
- 从中分配 Pod IP 地址的 IP 地址块。在安装后此字段是不可变的。
- 16
- Kubernetes 服务的虚拟 IP 地址块。服务的 IP 地址池.支持单个条目。在安装后此字段是不可变的。
- 17
- 端口范围允许用于
NodePort
类型的 Kubernetes 服务。如果没有指定,则使用默认 30000-32767 范围。没有指定NodePort
的服务会自动从这个范围内分配一个。此参数可以在安装集群后更新。 - 18
- 节点的名称。默认值为 hostname。如果非空,则使用此字符串来识别节点,而不是主机名。在 MicroShift 首次启动后,您无法更改此不可变设置。
- 19
- 节点的 IP 地址。默认值是默认路由的 IP 地址。