第 1 章 了解网络设置


了解如何将网络自定义和默认设置应用到红帽构建的 MicroShift 部署。每个节点都包含在一个机器和单个红帽构建的 MicroShift 中,因此每个部署都需要单独的配置、Pod 和设置。

集群管理员有几个选项用于公开集群内的应用程序到外部流量并确保网络连接:

  • 服务,如 NodePort
  • API 资源,如 IngressRoute

默认情况下,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 网络拓扑

317 RHbM OVN topology 0323

1.1.1.1. 虚拟化网络的 OVN 逻辑组件描述

OVN 节点交换机

一个名为 <node-name> 的虚拟交换机。OVN 节点交换机根据节点的主机名命名。

  • 在本例中,node-namemicroshift-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 连接到 OVN join 交换机。端口 3 与内部 IP 地址 100.64.0.2 连接。
    • OVN 集群路由器 ovn_cluster_router 通过逻辑路由器端口 2 连接到 join 交换机。端口 2 与内部 IP 地址 100.64.0.1 连接。
  • 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 1Interface 2 连接到节点交换机。

1.1.2. IP 转发

启动时,ovnkube-master 容器会自动启用主机网络 sysctl net.ipv4.ip_forward 内核参数。这需要将传入的流量转发到 CNI。例如,如果禁用了 ip_forward,则从集群外部访问 NodePort 服务会失败。

1.1.3. 网络性能优化

默认情况下,将三个性能优化应用到 OVS 服务,以最大程度降低资源消耗:

  • ovs-vswitchd.serviceovsdb-server.service 的 CPU 关联性
  • no-mlockallopenvswitch.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.servicemicroshift-networking RPM 软件包安装,作为依赖的 systemd 服务到 microshift.service。它负责设置 OVS 网关网桥。
OVN 容器

两个 OVN-Kubernetes 守护进程集由红帽构建的 MicroShift 渲染和应用。

  • ovnkube-master 包含 northd,nbdb,sbdbovnkube-master 容器。
  • ovnkube-node ovnkube-node 包含 OVN-Controller 容器。

    在红帽构建的 MicroShift 引导后,OVN-Kubernetes 守护进程集会在 openshift-ovn-kubernetes 命名空间中部署。

打包

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-intbr-ex 之间的跳接端口允许流量遍历提供商网络和边缘网络。Kubernetes pod 通过虚拟以太网对连接到 br-int 网桥:一个虚拟以太网对端附加到 pod 命名空间,另一个端点连接到 br-int 网桥。

1.1.6.1. 主网关接口

您可以在 ovn.yaml 配置文件中将所需的主机接口名称指定为 gatewayInterface。指定的接口在 OVS 网桥 br-ex 中添加,它充当 CNI 网络的网关桥接。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.