极客视点
极客时间编辑部
极客时间编辑部
113243 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/04:31
登录|注册

如何为多个K8s集群设置全局负载均衡器?

讲述:丁婵大小:6.20M时长:04:31
最近,Jetstack 的工程团队介绍了如何跨多个谷歌 Kubernetes 引擎(Google Kubernetes Engine)即 GKE 集群设置全局负载均衡器,同时使用谷歌的非标准容器原生负载平衡和 Google Cloud Armor 来进行 DDoS 保护。对此,InfoQ 记者赫里希克·巴鲁阿(Hrishikesh Barua)进行了报道与分析,以下为中文编译内容。
Jetstack 的一个客户具有现成的配置环境,该环境由多个 Kubernetes 集群组成,并基于 DNS 路由至不同的负载均衡器 IP。他们希望整合 Google Cloud Armor 的 DDos 保护功能,并使用容器原生负载平衡来“改善流量的可见性和网络性能”。该团队经历了多个迁移阶段以引入这些功能并采用了一种自定义方式将单个 GLB 和多个 Kubernetes 集群后端绑定在一起。
在 Kubernetes 规范中,服务级别有三种不同的“负载平衡”方式,即 ClusterIP、NodePort 和 LoadBalancer,其中不包括 Ingress。Jetstack 的客户利用“LoadBalancing”服务类型,该服务类型会转换成基于底层云平台的特定 LB 实现。在 GKE 中,这由 NLB (网络 LB)实现。然而,为了接受来自互联网的流量,Kubernetes 集群通常有个 Ingress,它由 GKE 中的 GLB( 全局 LB )实现。在客户之前的配置里面, AWS Route53 中有基于地理位置的 IP 地址路由。根据 DNS 的查询来源,Route53 可以返回不同的 IP 地址。
尽管 Google Cloud Armor 配置支持 3-7 层网络规则,但是,谷歌的 NLB 不支持 Google Cloud Armor DDoS 保护服务。因此,切换到一个 L7 LB(全局负载均衡器,即 GLB)是必要的。在 GKE 中创建一个 Ingress 资源就可以自动创建它。作为负载均衡器,L7 GLB 给路由 URL 和 TLS 终止带来了灵活性,并把流量服务端口限制为 80、8080 和 443 。后者导致了应用程序的一些变化,该应用程序之前使用多个其他端口。在该阶段结束时还有多个 L7 负载均衡器,DNS 指向了它们的 IP 地址。
GKE 有个叫做“容器原生负载平衡”的功能,该功能允许 pod 直接接收来自负载均衡器的流量。这并不是 Kubernetes 规范的一部分,而是 GKE 中的优化,因而不能用于其他供应商托管的 Kubernetes 产品。如果没有该功能的话,从 LB 到 pod 的流量需要在 GKE 网络中绕行。其中涉及的额外网络跳跃(hop)会增加延迟。容器原生负载均衡需要创建网络端点群组(Network Endpoint Groups,简称 NEG ),这是一个谷歌的特定功能,它包含服务于流量的后端 pod 的 IP 地址。在迁移的第二阶段包含了这些任务。
在第三个阶段,主要的变化是使用单个 GLB IP 地址,而不是使用 DNS 返回不同负载均衡器的特定于区域的 IP 地址。Kubernetes 没有在单个 Ingress 背后包含多个集群的机制。谷歌有个测试版的工具,试图来做这件事,但是,还它还处于早期阶段。重要的是,让多个 Kubernetes 集群拥有一个 GLB(或另一个 Ingress LB)不同于多个 Kubernetes 集群协同工作。前者是关于使用单个端点,全局流量通过它被路由到独立的 Kubernetes 集群,而后者是关于对多个 Kubernetes 集群使用单个控制平面。
Jetstack 团队借助 Terraform 的 Google provider 实现了自动化,他们分别创建了 NEG 资源和 GLB,并使用注解把它们绑定在一起。还有另一个工具致力于简化这项工作。其他公司的解决方案各有不同,比如使用一个 Envoy 控制平面和使用集群注册表(Cluster Registry)。
以上就是今天的内容,希望对你有所帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • 小斧
    引擎生态也很重要。
    2
收起评论
显示
设置
留言
1
收藏
27
沉浸
阅读
分享
手机端
快捷键
回顶部