3.6. 网络
Red Hat OpenStack Platform 和 Red Hat OpenShift Container Platform 具有独立且成熟的网络解决方案。
选择正确的解决方案取决于您的具体工作负载。尝试选择满足 OpenShift 应用需求的网络解决方案,并降低复杂性。
虽然这些解决方案可以分层,但请考虑工作负载要求以避免重复网络功能。
3.6.1. OpenStack 网络 复制链接链接已复制到粘贴板!
OpenStack Neutron API 为各种后端网络插件提供了一个通用抽象层。OpenStack Platform 支持多个后端网络插件:
- ML2 OVS
- OVN
- 商业 SDN
提供商网络为租户实例分配一组外部访问的浮动 IP 地址。远程客户端使用浮动 IP 地址访问以下服务:
- OpenShift 应用
- OpenShift API 端点
- Web 控制台
有关 OpenStack 网络的更多信息,请参阅 网络指南。
3.6.1.1. OpenStack networking (neutron)后端插件 复制链接链接已复制到粘贴板!
与其他许多 OpenStack 组件一样,联网子系统(neutron)是可插拔的,因此客户可以选择最适合其业务与技术要求的解决方案。对于 Red Hat OpenStack Platform,客户可从受支持的选项中进行选择。
Red Hat OpenStack Platform 16.2 实施的默认 neutron 后端是 OVN。
3.6.1.1.1. Open vSwitch (OVS) 复制链接链接已复制到粘贴板!
OVS 是一种开源的多层软件交换机,设计为在虚拟服务器环境和多个红帽产品之间用作虚拟交换机。OVS 在 OSP 中是一个默认的 neutron 后端,用于多个发行版本,且受到全面支持。
3.6.1.1.2. Open Virtual Network (OVN) 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform 16.2 默认使用 Open Virtual Network (OVN)组件。OVN 是一个网络虚拟化解决方案,内置于 Open vSwitch (OVS)项目中。OVN 支持 Neutron API,并提供最常见的网络功能(如桥接、路由、安全组、NAT 和浮动 IP)的干净分布式实现。
当使用 OVN 作为 neutron 的后端时,通用网络虚拟化封装(GENEVE)用于网络封装。使用 OVN 和 GENEVE 有以下优点:
- 通过可扩展的标头格式提高灵活性
- 默认情况下,L3 流量的分发。
早于 Red Hat OpenStack Platform 16.1 的版本默认使用 OVS 的 ML2 插件。
3.6.1.1.3. 第三方 SDN 解决方案 复制链接链接已复制到粘贴板!
多个网络供应商支持自己的插件供 Neutron 使用。对于 OpenStack 上 OpenShift 的未来迭代,可能会增加合作和测试来支持其他第三方解决方案。
3.6.1.2. Neutron 后端和红帽 OpenStack 平台 复制链接链接已复制到粘贴板!
您应该选择一个符合您唯一情况的 neutron 后端。
在 OpenStack 16.2 上计划 OpenShift 4.12 时,我们强烈建议您使用默认的 OVN 后端,因为它是经过测试的配置,并允许将 Octavia OVN 供应商用于 LoadBalancer 服务。
要在 OpenStack 上部署 OpenShift 时协助选择 neutron 后端,请考虑以下事项:
- OVN 完全测试并支持 OpenStack 安装中的 OpenShift。
- OVN 是 Red Hat OpenStack Platform 16.1 及之后的版本的默认 neutron 后端。
3.6.1.3. OpenStack 负载均衡 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform 使用 Octavia 项目作为其负载均衡即服务(LBaaS)实施。在使用 OVN 部署的 OSP 16.2 中有两个 Octavia 后端可用,默认的 Amphora 和 OVN 提供者。主要区别在于,Amphora 通过创建虚拟机并在其上配置 HAProxy 实例来部署每个负载均衡器,而 OVN 提供程序则使用 OpenFlow 规则实现它们。
默认情况下,OpenShift 将使用 Amphora 作为 Octavia 后端。
有关 OVN Octavia 供应商的详情,包括其限制,请查看 上游文档,并参阅红帽解决方案架构师或支持关联。
3.6.1.4. 红帽测试的解决方案:OpenStack 网络 复制链接链接已复制到粘贴板!
在我们的解决方案中,我们使用默认的 Red Hat OpenStack Platform 16.2: OVN 的默认 neutron 网络后端。
3.6.1.4.1. OpenShift 网络 复制链接链接已复制到粘贴板!
在以前的 OpenStack 上的 OpenShift 版本中,我们使用 Kuryr SDN 插件进行联网。Kuryr 证明是一个性能可靠的解决方案,在许多生产安装中都成功使用。
在 OpenStack 和 OpenShift 的最后几个版本中,可用的 SDN 解决方案的需求和功能得到了显著演进,在更紧凑的产品中提供了更多功能、更大扩展以及更高的可靠性。
现在,两个产品现在都提供并默认使用,Open Virtual Network (OVN)作为其软件定义网络解决方案的默认选择。
在这个版本中,Kuryr 用于解决的许多用例,比如 SDN 层上双封装导致的潜在性能开销。另外,Kuryr 中观察到的一些可扩展性和功能限制也会从迁移到 OVN 中移除。
OVN-Kubernetes Container Network Interface (CNI)插件是 OpenShift 网络的下一代 SDN 解决方案。构建为利用 OVN (开放虚拟网络)并由与上游供应商无关的大型社区支持,OVN-Kubernetes 具有以下特征:
- 使用 OVN 管理网络流量
- 实现 Kubernetes 网络策略支持
- 引入了 Geneve (Generic Network Virtualization Encapsulation)协议,以便在节点间覆盖网络。
这允许在网络层之间更加精确地集成网络层,降低复杂性并确保更可预测的结果。
要了解更多有关网络和 OpenShift 的信息,请参阅官方文档中的 了解网络。
3.6.1.5. LoadBalancer 服务 复制链接链接已复制到粘贴板!
OpenShift 中的 LoadBalancer 服务由 cloud-provider-openstack 和 OpenStack Octavia 处理。对于类型为 LoadBalancer
的每个服务,将在 Octavia 中创建负载均衡器。默认情况下,OpenShift 使用 Amphora 后端作为功能丰富的解决方案。这种情况的不足是一个更高的资源消耗,因为 Amphora 会为每个负载均衡器创建一个虚拟机。
因为负载均衡器服务往往是静态的,我们发现 Amphora 是大多数用例的理想选择。
另请注意,Amphora 始终将进入 pod 的流量的源 IP 设置为负载均衡器的 IP。这意味着,即使将 .spec.externalTrafficPolicy
设置为 Local
,您将无法在没有使用 PROXY 协议等额外功能的情况下获取原始源 IP。
如果资源消耗问题,您可以将它配置为 Openshift 集群,以使用 OVN Octavia Provider。在更改 Octavia 供应商前,您需要考虑以下限制:
-
在 OSP 16.2 OVN Octavia 提供者不支持健康监控器。这意味着,不支持将
.spec.externalTrafficPolicy
设置为Local
的服务。 -
.spec.loadBalancerSourceRanges
选项会被忽略,在使用 OVN Octavia Provider 时流量总是不受限制。
使用 OSP 16.2 和 OpenShift 4.12,我们建议您使用默认的 Amphora 作为 cloud-provider-openstack 使用的 Octavia 后端。
3.6.1.6. 红帽测试的解决方案:OpenShift 网络 复制链接链接已复制到粘贴板!
对于我们的解决方案,我们使用 OVN-Kubernetes 作为 OpenShift 网络,Amphora 作为 Octavia 后端。