第 1 章 了解网络设置
了解如何将网络自定义和默认设置应用到红帽构建的 MicroShift 部署。每个节点都包含在一个机器和单个红帽构建的 MicroShift 中,因此每个部署都需要单独的配置、Pod 和设置。
集群管理员有几个选项用于公开集群内的应用程序到外部流量并确保网络连接:
- 服务,如 NodePort
-
API 资源,如
Ingress
和Route
默认情况下,Kubernetes 为 pod 内运行的应用分配内部 IP 地址。Pod 及其容器之间可以有网络流量,但集群外的客户端无法直接访问容器集,除非通过一个服务(如 NodePort)公开。
要排除 NodePort 服务的连接问题,请阅读发行注记中的已知问题。
1.1. 关于 OVN-Kubernetes 网络插件
OVN-Kubernetes 是红帽构建的 MicroShift 部署的默认网络解决方案。OVN-Kubernetes 是 pod 和基于 Open Virtual Network (OVN) 的服务的虚拟网络。OVN-Kubernetes Container Network Interface (CNI) 插件是集群的网络插件。使用 OVN-Kubernetes 网络插件的集群也会在节点上运行 Open vSwitch (OVS)。OVN 在节点上配置 OVS,以实施声明的网络配置。
1.1.1. 网络拓扑
OVN-Kubernetes 提供基于 overlay 的网络实现。此覆盖包括基于 OVS 的服务和 NetworkPolicy 实施。覆盖网络使用 Geneve (Generic Network Virtualization Encapsulation) 隧道协议。Geneve 隧道的 pod 最大传输单元(MTU)被设置为比主机上的物理接口 MTU 小的值。这个较小的 MTU 为传输前添加到隧道头所需的信息留出空间。
OVS 作为 systemd 服务在 MicroShift 节点的红帽构建上运行。OVS RPM 软件包作为对 microshift-networking
RPM 软件包的依赖项安装。安装了 microshift-networking
RPM 时,OVS 会立即启动。
红帽构建的 MicroShift 网络拓扑
1.1.1.1. 虚拟化网络的 OVN 逻辑组件描述
- OVN 节点交换机
一个名为
<node-name>
的虚拟交换机。OVN 节点交换机根据节点的主机名命名。-
在本例中,
node-name
是microshift-dev
。
-
在本例中,
- OVN 集群路由器
名为
ovn_cluster_router
的虚拟路由器,也称为分布式路由器。-
在本例中,集群网络是
10.42.0.0/16
。
-
在本例中,集群网络是
- OVN join 开关
-
名为
join
的虚拟交换机。 - OVN 网关路由器
-
名为
GR_<node-name>
的虚拟路由器,也称为外部网关路由器。 - OVN 外部交换机
-
名为
ext_<node-name>.
的虚拟交换机。
1.1.1.2. 网络拓扑图中的连接描述
-
网络服务设备
enp1s0
和 OVN 外部交换机ext_microshift-dev
之间的南北流量由网关网桥br-ex
通过 OVS 跳接端口提供。 -
OVN 网关路由器
GR_microshift-dev
通过逻辑路由器端口 4 连接到外部网络交换机ext_microshift-dev
。端口 4 附加到节点 IP 地址 192.168.122.14。 join 交换机
join
将 OVN 网关路由器GR_microshift-dev
连接到 OVN 集群路由器ovn_cluster_router
。IP 地址范围为 100.62.0.0/16。-
OVN 网关路由器
GR_microshift-dev
通过逻辑路由器端口 3 连接到 OVNjoin
交换机。端口 3 与内部 IP 地址 100.64.0.2 连接。 -
OVN 集群路由器
ovn_cluster_router
通过逻辑路由器端口 2 连接到join
交换机。端口 2 与内部 IP 地址 100.64.0.1 连接。
-
OVN 网关路由器
-
OVN 集群路由器
ovn_cluster_router
通过逻辑路由器端口 1 连接到节点交换机microshift-dev
。端口 1 与 OVN 集群网络 IP 地址 10.42.0.1 附加。 -
pod 和网络服务之间的东西流量由 OVN 集群路由器
ovn_cluster_router
和节点交换机microshift-dev
提供。IP 地址范围为 10.42.0.0/24。 -
pod 之间的东西流量由节点交换机
microshift-dev
提供,而无需网络地址转换 (NAT)。 -
pod 和外部网络之间的南北流量由 OVN 集群路由器
ovn_cluster_router
和主机网络提供。此路由器通过ovn-kubernetes
管理端口ovn-k8s-mp0
连接,IP 地址为 10.42.0.2。 所有 pod 都通过其接口连接到 OVN 节点交换机。
-
在本例中,Pod 1 和 Pod 2 通过
Interface 1
和Interface 2
连接到节点交换机。
-
在本例中,Pod 1 和 Pod 2 通过
1.1.2. IP 转发
启动时,ovnkube-master
容器会自动启用主机网络 sysctl net.ipv4.ip_forward
内核参数。这需要将传入的流量转发到 CNI。例如,如果禁用了 ip_forward
,则从集群外部访问 NodePort 服务会失败。
1.1.3. 网络性能优化
默认情况下,将三个性能优化应用到 OVS 服务,以最大程度降低资源消耗:
-
ovs-vswitchd.service
和ovsdb-server.service
的 CPU 关联性 -
no-mlockall
到openvswitch.service
-
将处理程序和
revalidator
线程限制为ovs-vswitchd.service
1.1.4. 网络功能
红帽构建的 MicroShift 4.13提供的网络功能包括:
- Kubernetes 网络策略
- 动态节点 IP
- 指定主机接口上的集群网络
红帽构建的 MicroShift 4.13 不提供网络功能:
- egress IP/firewall/qos: 禁用
- 混合网络:不支持
- IPsec: 不支持
- 硬件卸载:不支持
1.1.5. 红帽构建的 MicroShift 网络组件和服务
本简要概述在红帽构建的 MicroShift 中描述了网络组件及其操作。microshift-networking
RPM 是一个软件包,可自动拉取任何与网络相关的依赖项和 systemd 服务来初始化网络,例如 microshift-ovs-init
systemd 服务。
- NetworkManager
-
NetworkManager 需要在红帽构建的 MicroShift 节点上设置初始网关网桥。NetworkManager 和
NetworkManager-ovs
RPM 软件包作为依赖项安装到microshift-networking
RPM 软件包,该软件包包含必要的配置文件。红帽构建的 MicroShift 中的 NetworkManager 使用keyfile
插件,并在安装microshift-networking
RPM 软件包后重启。 - microshift-ovs-init
-
microshift-ovs-init.service
由microshift-networking
RPM 软件包安装,作为依赖的 systemd 服务到 microshift.service。它负责设置 OVS 网关网桥。 - OVN 容器
两个 OVN-Kubernetes 守护进程集由红帽构建的 MicroShift 渲染和应用。
-
ovnkube-master 包含
northd
,nbdb
,sbdb
和ovnkube-master
容器。 ovnkube-node ovnkube-node 包含 OVN-Controller 容器。
在红帽构建的 MicroShift 引导后,OVN-Kubernetes 守护进程集会在
openshift-ovn-kubernetes
命名空间中部署。
-
ovnkube-master 包含
- 打包
OVN-Kubernetes 清单和启动逻辑内置在红帽构建的 MicroShift 中。
microshift-networking
RPM 中包含的 systemd 服务和配置包括:-
/etc/NetworkManager/conf.d/microshift-nm.conf
for NetworkManager.service -
/etc/systemd/system/ovs-vswitchd.service.d/microshift-cpuaffinity.conf
for ovs-vswitchd.service -
/etc/systemd/system/ovsdb-server.service.d/microshift-cpuaffinity.conf
-
/usr/bin/configure-ovs-microshift.sh
用于 microshift-ovs-init.service -
/usr/bin/configure-ovs.sh
用于 microshift-ovs-init.service -
/etc/crio/crio.conf.d/microshift-ovn.conf
用于 CRI-O 服务
-
1.1.6. 网桥映射
网桥映射允许提供商网络流量访问物理网络。流量离开提供商网络,到达 br-int
网桥。br-int
和 br-ex
之间的跳接端口允许流量遍历提供商网络和边缘网络。Kubernetes pod 通过虚拟以太网对连接到 br-int
网桥:一个虚拟以太网对端附加到 pod 命名空间,另一个端点连接到 br-int
网桥。
1.1.6.1. 主网关接口
您可以在 ovn.yaml
配置文件中将所需的主机接口名称指定为 gatewayInterface
。指定的接口在 OVS 网桥 br-ex 中添加,它充当 CNI 网络的网关桥接。