第 1 章 了解网络设置


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

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

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

默认情况下,Kubernetes 为 pod 内运行的应用分配内部 IP 地址。Pod 及其容器之间可以有网络流量,但集群外的客户端无法直接访问容器集,除非通过一个服务(如 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 隧道,因此 pod 最大传输单元 (MTU) 被设置为小于主机上物理接口的更小,以删除隧道标头。

OVS 作为 systemd 服务在 MicroShift 节点的红帽构建上运行。OVS RPM 软件包作为对 microshift-networking RPM 软件包的依赖项安装。安装了 microshift-networking RPM 时,OVS 会立即启动。

1.1.1.1. IP 转发

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

1.1.2. 网络性能优化

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

  • ovs-vswitchd.serviceovsdb-server.service 的 CPU 关联性
  • no-mlockallopenvswitch.service
  • 将处理程序和 revalidator 线程限制为 ovs-vswitchd.service

1.1.3. 网络功能

红帽构建的 MicroShift 4.12 提供的网络功能包括:

  • Kubernetes 网络策略
  • 动态节点 IP
  • 指定主机接口上的集群网络
  • 二级网关接口
  • 双堆栈

红帽构建的 MicroShift 4.12 不提供网络功能:

  • egress IP/firewall/qos: 禁用
  • 混合网络:不支持
  • IPsec: 不支持
  • 硬件卸载:不支持

1.1.4. 红帽构建的 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.5. 网桥映射

网桥映射允许提供商网络流量访问物理网络。流量离开提供商网络,到达 br-int 网桥。br-intbr-ex 之间的跳接端口允许流量遍历提供商网络和边缘网络。Kubernetes pod 通过虚拟以太网对连接到 br-int 网桥:一个虚拟以太网对端附加到 pod 命名空间,另一个端点连接到 br-int 网桥。

1.1.5.1. 主网关接口

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

1.1.5.2. 二级网关接口

您可以在 ovn.yaml 配置文件中为集群入口和出口设置一个额外的主机接口。第二个 OVS 网桥 br-ex1 中添加了额外的接口。集群 pod 流量根据目标 IP 到 br-ex1 自动路由额外的主机子网。

根据 CNI 配置创建两个或多个 OVS 网桥:

默认部署
  • ovn.yaml 配置文件中没有指定 externalGatewayInterface
  • 创建 br-exbr-int 这两个 OVS 网桥。
自定义部署
  • externalGatewayInterfaceovn.yaml 配置文件中是用户指定的。
  • 创建三个 OVS 网桥:br-exbr-ex1br-int

br-ex 网桥由 microshift-ovs-init.service 创建,或者手动创建。br-ex 网桥包含静态编程的 openflow 规则,用于区分进出主机网络 (underlay) 和 OVN 网络 (overlay) 的流量。

br-int 网桥由 ovnkube-master 容器创建。br-int 网桥包含动态编程的 openflow 规则,这些规则处理集群网络流量。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.