张晓辉 Flomesh高级云原生架构师 中国DevOps社区峰会2022·武汉 峰会2022·武汉 中国DevOps社区峰会2022·武汉 中国DevOps社区峰会2022·武汉 张晓辉 资深程序员,LFAPAC开源布道师,微软MVP,云原生社区管委会成员,公众号“云原生指北”作者。有多年的微服务和基础架构实践经验,主要工作涉及微服务、容器、Kubernetes、DevOps等。 Agenda 中国DevOps社区峰会2022·武汉 1 2 Kubernetes多集群简介应用场景 3 Kubernetes多集群技术现状 4 Flomesh的Kubernetes多集群流量管理方案 中国DevOps社区峰会2022·武汉 Kubernetes多集群简介 Host Host Host Host Host Host Host Host Host Host Host Host Host Host Host Host Host Host Host Host Kubernetes多集群简介 多区域多数据中心多集群 中国DevOps社区峰会2022·武汉 Host 集群2 集群3 集群1 数据中心1 集群3 Host 集群2 Host 集群1 Host 区域1 数据中心1 数据中心2 区域2 数据中心3 集群2 Host 集群1 Host 集群2 Host 集群1 Host 集群3 Host 集群2 Host 集群1 Host 多集群的技术方案 中国DevOps社区峰会2022·武汉 01应用可移植性:容器化 02基础能力解耦:分布式应用运行时 03跨集群的服务治理:服务网格 04资源抽象、弹性:容器调度 05数据同步:单/双向、两地三中心 中国DevOps社区峰会2022·武汉 应用场景 更低的延迟 中国DevOps社区峰会2022·武汉 Region-1 Service2 Service1 Region-1 Region-2 Service2 Service1 Region-2 更大范围的可伸缩性 中国DevOps社区峰会2022·武汉 Service1 Service1 Service1 POD POD POD POD POD POD POD POD POD Cluster1 Cluster2 Cluster3 高可用性 中国DevOps社区峰会2022·武汉 ClusterN Cluster1 Service2 Service1 Service2 Cluster2 Service2 业务隔离 中国DevOps社区峰会2022·武汉 ClusterN Cluster1 Service2 Service1 Service4 Cluster2 Service3 个人信息保护法 网数络据安全法 数据处境安全评估办法 CCPAGDPR 合规和数据隔离 中国DevOps社区峰会2022·武汉 China Cluster US Cluster EU Cluster 避免厂商锁定 中国DevOps社区峰会2022·武汉 上云、下云过渡 中国DevOps社区峰会2022·武汉 Public Private Service2 Service1 Service2 Service1 Public Private Service2 Service1 Service2 Service1 分布式的云边一体应用系统 云端集群 业务2云端系统 业务1云端系统 云端 边端集群2 业务2边端系统 业务1边端系统 边端集群1 业务2边端系统 业务1边端系统 业务2边端系统 业务1边端系统 边… 端 中国DevOps社区峰会2022·武汉 中国DevOps社区峰会2022·武汉 多集群的网络拓扑 网络拓扑-镜像 中国DevOps社区峰会2022·武汉 CloudA D C B A CloudB D C B A Private D C B A 实施难度低,维护成本高 网络拓扑-网状 中国DevOps社区峰会2022·武汉 CloudA D C B CloudB D C B Private C A 实施难度高,维护成本低 中国DevOps社区峰会2022·武汉 Flomesh的Kubernetes多集群流量管理方案 Flomesh方案的技术关注点 中国DevOps社区峰会2022·武汉 服务发现 流量管理及调度 DNS Kubernetes 多集群 跨集群通信 社区规范和标准 FlomeshGUI •多集群管理 •南北向流量管理 •多集群服务发现 架构概览 中国DevOps社区峰会2022·武汉 fsm •连通性及服务接入 •可使用fsm的ingress-pipy或第三方ingresscontroller Ingress Ingress fsmfsm osm-edgeosm-edge 东西向流量管理及调度 控制平面架构 中国DevOps社区峰会2022·武汉 中国DevOps社区峰会2022·武汉 纳管集群架构 ServiceExport及ServiceImport 中国DevOps社区峰会2022·武汉 在集群1中自动创建 ServiceImport 集群1 Endpoints 10.43.0.7 Service1Namespace:testName:svc1Port:8080 ServiceImportNamespace:testName:svc1Ports: -Port:8080 Addr:cluster2.com/testCluster:cluster2 在集群1中服务发现的结果 Ingress2 cluster2.com 集群1 Service1Namespace:testName:svc1Port:8080 Endpoints 10.43.0.7 集群2 Service1Namespace:testName:svc1Port:8080 Endpoints 10.45.0.2 集群2 ServiceExp Path:/test 在集群2中创建 Endpoints 10.45.0.2 Service1Namespace:testName:svc1Port:8080 Ingress2 cluster2.com:80 ortNamespace:test Name:svc1Port:8080 ServiceExport 流量管理和调度 集群1 •拦截DNS请求,将对service2的域名解析在sidecar内部转换为列表中的格式,通过tag和weight控制路由选择。 repo •如果不是被纳管的服务,DNS名称解析交由上一级kube-dns处理 控制平面 Manager 控制ServiceExport及 ServiceImport API Server API Server 集群2 就近路由调用失败 规则及路由信息下发 repo ServicePOD 11 Service2 Ingress2 Service1 Service2 Inboundsidecar Ingress1 Outboundsidecar Service2 &DNSServer Failover PathServiceEndpointsTags ------------ cluster1.com/service1service110.43.0.11Cluster1 ServiceEndpointsTagsWeight ------------ service110.43.0.11Cluster1 100 service210.43.0.12Cluster1 100 服务权重配置变更,例如本地集群服务权重变更为0,远端集群服务权重变更为100,脚本根据权重自动完成主备切换 PathServiceEndpointsTags 中国DevOps社区峰会2022·武汉 -------cluster2.com/service1service1 10.45.0.12 Cluster2cluster2.com/service2service2 10.45.0.22 Cluster2 cluster2.com/service1Cluster2 0 关注我们 flomesh.iogithub.com/flomesh-ioflomesh-io.slack.com 中国DevOps社区峰会2022·武汉