热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kuberouter:在裸机上Kubernetes集群的高可用和可扩展性

【编者的话】:本文主要介绍了公司中负载均衡的解决方案和实现机制以及在裸机上如何实现Kubernetes的集群。多年来全网规模公司已经使用基于商业Linux服务器的负载均衡解决方案设


【编者的话】:本文主要介绍了公司中负载均衡的解决方案和实现机制以及在裸机上如何实现Kubernetes的集群。


多年来全网规模公司已经使用基于商业Linux服务器的负载均衡解决方案设计了大量的可扩展性和高可用的服务。传统的中间设备已经完全被软件负载均衡所覆盖。在这边博客中我们将看到微软的 Ananta ,谷歌的 Maglev ,Facebook的 Shiv ,Github的 GLB 以及雅虎的 L3 DSR 的共用基础模块。我们将看到Kube-router是如何为Kubernetes去实现一些这样的基础模块,以及如何利用它们在裸机上部署高可用和可扩展性。


网络设计


下图显示了全网规模公司中所使用的典型的分层架构。



下面是一些标准机制的使用。


使用BGP(边界网关协议)和ECMP(等价路由)


你拥有第二梯队的L4转发器,每一个都是BGP的发言者和公告服务虚拟IP到BGP路由器。通过L4转发器路由器为虚拟IP提供了很多条等价路径。运行在BGP协议上的L4转发器提供自动故障检测并恢复。如果一个L4转发器失败或者意外宕机,路由器将通过BGP协议检测到该故障并自动停止发送流量到这台转发器。同理,当L4转发器恢复后,它会开始宣布路由,然后路由器就可以将开始流量转发给它。


L3和L4网络负载均衡


由于路由器有多条通往公告的虚拟IP线路,它可以执行ECMP负载均衡。在这种情况下在第三层做负载均衡时,路由器将流量分配给第2位的L4转发器。路由器也可以进行散列(在包源、目标IP和端口等)的负载均衡。与相同流向对应的流量会被路由到相同的L4转发器。即使有多个路由器(冗余),如果使用一致性哈希,流量也可以被路由器转发到相同的L4转发器。


L4转发器


L4转发器不代理连接,只是将数据包转发到选定的端点。因此L4转发器是无状态的。但是他们可以使用一致的哈希来使用等价路由来进行碎片传输,因此,每个L4转发器为特定的流选择相同的端点。因此,即使L4转发器下降,流量仍然会在相同的端点结束。Linux的LVS/IPVS被征用为L4转发器。


后台服务器直接响应用户


在典型的负载均衡器中充当代理,数据包被目标映射到真实的服务器IP。返回的流量必须要通过相同的负载均衡器,这样包就会被源映射(作为源IP的VIP)。这阻碍了扩展尤其是当路由器通过L4转发器进行分片处理时。为了突破这种限制,正如上文提到的L4转发器简单的转发数据包。它会对数据包进行隧道处理以便原始数据包就会被分发到服务点。很多解决方案(IPVS/LVS的DR模式,使用GRE/IPIP隧道等)都可以将流量发送到端点。当端点接收到数据包后,就会看到从原始客户端发送给VIP的流量(当然端点需要设置从原始客户端接收到VIP的流量)。返回的流量直接发送给客户端。


L4/L7分割设计


在上述的基本机制进行扩展实现应用程序的负载均衡。被称为L4/L7的分割设计如下所示。



这如何适用于Kubernetes呢?


      Kubernetes提供多种凡是暴露服务:节点端口,集群IP和对外IP等。当集群运行在公共云上时这些底层机制能被连接到云负载均衡器上(类似于亚马逊的ELB/ALB),因此有些问题能被你很快解决。当涉及到裸机部署时,对外集群公开服务特别具有挑战性。


你可以用多种方式去解决这个问题。Kube-router已经有能力为集群IP和对外IP做广告去配置BGP对等点


以便在集群外很容易暴露服务。Kube-router通过使用LVS/IPVS隧道模式同样支持后台服务器直接响应用户。通过由Kube-router提供的构建模块,你可以按照上面提到的全网规模公司相同方式设计出在集群之外暴露的服务。


演示


请查看下面的演示,以了解kube-router如何将每个集群节点转换成一个L4转发器,它构建在IPVS/LVS之上。通过kube-router的每个节点也为配置的BGP路由器提供服务外部IP。在演示中,标准Linux运行的Quagga被用作路由器。演示中使用了Linux的本地流为基础的ECMP负载平衡。


视频: https://asciinema.org/a/145163


原文链接: Kube-router: Highly-available and scalable ingress for baremetal Kubernetes clusters (翻译:康良)




推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • 什么是网关服务器初学linux服务器开发时,我们的服务器是很简单的,只需要一个程序完成与客户端的连接,接收客户端数据,数据处理,向客户端发送数据。但是在处理量很大的情况下,一 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • [我们是谁?] ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
立案whan_597
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有