关于云计算:OpenELB-在-CVTE-的最佳实践

42次阅读

共计 2651 个字符,预计需要花费 7 分钟才能阅读完成。

作者:大飞哥,视源电子股份运维工程师,KubeSphere 社区用户委员会广州站站长,KubeSphere Ambassador。

公司介绍

广州视源电子科技股份有限公司(以下简称视源股份)成立于 2005 年 12 月,旗下领有多家业务子公司。截至 2022 年 12 月 31 日,公司总人数超 6000 人,约 60% 为技术人员,员工平均年龄约为 29 岁。

目前公司的主营业务为液晶显示主控板卡和交互智能平板等显控产品的设计、研发与销售,产品已广泛应用于家电畛域、教育信息化畛域、企业服务畛域等,始终致力于通过产品翻新、研发设计晋升产品的用户体验,为客户和用户继续发明价值。公司自成立以来,依靠在音视频技术、信号处理、电源治理、人机交互、利用开发、系统集成等电子产品畛域的软硬件技术积攒,面向多利用场景进行技术创新和产品开发,通过产品和资源整合等能力在细分市场逐渐获得领先地位,并建设了教育数字化工具及服务提供商希沃(seewo)、智慧协同平台 MAXHUB 等多个业内知名品牌。

挑战

随着在 Kubernetes 上运行的应用程序数量减少,如何优雅地将服务导出到集群成为一个须要解决的问题。Kubernetes 提供了 NodePort 和 Loadbalancer 来导出服务。NodePort 受到主机端口数量的限度,过多的端口凋谢还会有平安危险,在流量治理方面更是让人望而却步;Loadbalancer 则用于申明云供应商的服务,对于裸金属服务器而言,Kubernetes 官网不提供反对。对于企业公有云中的 Kubernetes 集群,想要对外提供服务,就遇到了挺大的挑战。在这种状况下,咱们发现了 OpenELB, 它能够在 Loadbalancer 类型中导出服务并稳固运行。

解决方案

作为 KubeSphere 团队开源的我的项目,OpenELB(曾用名 Porter)是一款为裸金属服务器提供 LoadBalancer 类型服务的产品。

总结起来,有如下几个长处:

  • 首先,它是由一个团队而不是集体运行的,而且社区贡献者颇多,因而能够防止厂商依赖或者无人保护。
  • 其次,OpenELB 反对的协定比同类竞争对手更多。
  • 最初,OpenELB 有齐备的文档,对中文反对敌对,企业服务能够取得更多的技术服务反对。在应用过程中,您会发现更多的惊喜。

实际过程

管理员能够通过 NodePort 导出 Kubernetes 服务。在这种状况下,每台集群主机都会导出同样的端口,这在大规模集群中的开销是微小的。可怜的是,Kubernetes 能够应用的主机端口是无限的(30000-32768)。开源社区倡议应用动静端口,这可能会带来危险和治理难度,给流量治理带来微小的挑战。Kubernetes 中的默认 LoadBalancer 类型的服务仅反对云厂商提供的服务。

OpenELB 是一种解决方案,用于为裸机提供负载平衡类型的服务,基于 BGP 和 ECMP 协定,可实现最佳性能和高可用性。OpenELB 提供了两个功能模块:

  1. 负载平衡控制器(Controller)

    该控制器负责将 BGP 路由同步到物理交换机。

  2. CRD 和 CRD 控制器

    CRD EIP 定义了在 Layer2 模式中应用的 EIP 地址池,同样,CRD BgpConf 和 BgpPeer 定义了 Kubernetes 集群外部的 BGP,并用于 BGP 模式。

生产环境中,强烈建议应用 BGP 模式。如下图所示,把物理路由器设施划归到 AS50001 中,把 OpenELB 所在的集群划归到 AS 50000 中,OpenELB 会建设服务路由规定,并将其同步到物理路由器上,BGP 路由器依据负载平衡策略转发对应的流量达到相应的集群主机节点上,kube-proxy 再近一步转发流量到 Service 层。BGP 模式须要物理路由器设施和集群主机网络的反对,其最大的长处就是稳固牢靠,解决了路由转发的单点故障问题。

尽管 BGP 模式是倡议的模式,然而在理论利用中,Layer2 模式应用更为宽泛。因为它简略易用,配置要求低,配置简略。对于应用虚拟机作为 K8s 集群节点的用户,受 VMware 网络的限度,只能抉择 Layer2 模式。让咱们来看下 Layer2 模式的网络架构。

咱们应用 GitLab CI 和 Argo CD 建设自动化流水线,以帮忙开发人员提高效率,并应用 Nginx Ingress 解决 7 层申请。Argo CD 应用 IP 10.10.1.2 导出负载平衡类型的服务,而 Nginx Ingress 则应用 IP 10.10.1.3 导出。因而,咱们能够建设如下的 DNS 记录:

# HOSTS
10.10.1.2  argocd.cvte.com
10.10.1.3  ingress.cvte.com

当用户拜访像 argocd.cvte.com 这样的域名时,申请将路由到路由器。因为 EIP 不能绑定到任何网络卡硬件上,因而路由器须要播送 ARP 申请,这个申请将被 OpenELB 回应一个集群节点的 IP。这样,路由器就晓得将网络数据包发送到哪里了。由 Ingress 管制的任何其余域都会路由到另一个 EIP。

通常状况下,OpenELB 仅会应用一个集群节点 IP 响应 ARP 申请。如果此节点敞开或不可用,则 OpenELB 会切换到另一个节点,以确保业务的连续性。

通过对 Layer2 模式原理的解说,不难发现,Layer2 模式有单点故障危险。为了缩小这种单点危险,KubeSphere 研发团队贴心地开发了 VIP 模式,即虚构 IP 模式。VIP 提供了单点故障的转移,当 Layer2 模式中的主机节点故障,OpenELB 会主动切换流量到备份 IP。VIP 模式,只能算是缩小单点故障危险,无奈齐全毁灭危险。所以在生产环境中,一般 Layer2 模式或 VIP 模式,都不倡议应用。依据咱们的教训,如万般无奈,只能应用 Layer2 模式,那就独立两台机器,只用来接管内部流量,并尽量保障这两台机器的高可用。

应用成果

OpenELB 以 TCP 协定导出服务,并与 Ingress 配合应用,能够轻松治理大多数 Web 应用程序。与 NodePort 不同,OpenELB 只须要几个 EIP 即可代理申请到服务,流量集中处理从而极大地升高了治理难度。

总结

OpenELB 提供了一种为裸金属服务器导出 LoadBalancer 类型服务的性能,帮忙咱们轻松地管理网络基础设施。作为 KubeSphere 的一个子项目,OpenELB 非常适合在企业公有云环境中应用,具备较强的稳定性和可信度。

参考浏览

  • 负载均衡器 OpenELB ARP 坑骗技术解析
  • 详解 K8s 服务裸露机制与 OpenELB 负载均衡器插件(直播回放 + PPT)

    本文由博客一文多发平台 OpenWrite 公布!

正文完
 0