云原生系列二:如何实现跨数百个K8s集群的管理

简介: ​ 今天就由叶秋学长带领大家学习云原生专栏系列二:如何实现跨数百个K8s集群的管理?Intuit 实现数百个K8s集群的管理Intuit公司成立于1983年。它以个人财经软件为主要产品。2019年10月入选《财富》杂志“2019未来50强榜单”,排第21位。截至当年,Intuit公司4大BU、30个业务部门运行了大约160个K8s集群,大约5400个名称空间,每天要进行1300次的部署。那么他是如何做到,今天我们做一个简单的讲解。首先就是为什么Intuit公司要划分如此多的集群?他们希望在不同的业务部门之间实现隔离,并且各业务部门能够拥有自主权;其次,为了满足合规,将审计限

前言:随着云原生进程的加快,传统大型业务应用系统也走上了微服务化之路。服务功能分解是应用微服务化的巨大挑战,对于大型应用系统来说更是如此。不仅如此,虽然K8s已经实现了很多功能的自动化,也支撑了越来越多的服务,但当我们深入研究这些服务之间的连接时,发现微服务还有很长的路要走。而以Istio等为代表的高级服务网格平台,无疑已经成为微服务目前面临诸多问题的最佳解决手段。

image.gif编辑

今天就由叶秋学长带领大家学习云原生专栏系列二:如何实现跨数百个K8s集群的管理?

Intuit 实现数百个K8s集群的管理

Intuit公司成立于1983年。它以个人财经软件为主要产品。2019年10月入选《财富》杂志“2019未来50强榜单”,排第21位。截至当年,Intuit公司4大BU、30个业务部门运行了大约160个K8s集群,大约5400个名称空间,每天要进行1300次的部署。那么他是如何做到,今天我们做一个简单的讲解。

image.gif编辑

首先就是为什么Intuit公司要划分如此多的集群?他们希望在不同的业务部门之间实现隔离,并且各业务部门能够拥有自主权;其次,为了满足合规,将审计限定在一定的范围内;此外,还有一些传统老旧应用以及跨多个区域的托管服务,都需要独立的集群去托管。

image.gif编辑

举一个简单的例子,在上图中的三个集群中,API网关恰好是一个多租户系统,它支持多个BU,所以Intuit不希望该服务和任何其他服务部署在一起,所以这个API网关隔离在一个集群中。相反,产品信息服务和图书订购服务实际上由同一个BU维护,因此,二者形成了一个独立的集群。而支付服务是审计的一部分,Intuit把它拆分出来放到一个单独的集群里。

从单控制平面到多控制平面

当然,实际生产中的Intuit 服务集群要比这个示例复杂的多,也庞大的多。支撑Intuit 不断探索的动力主要有六个需求,分别是“服务的唯一全局标识”、“点对点身份验证”、“端到端加密”、“没有单点故障”、“服务发现和管理的解耦”以及“Istio 和 K8s 配置的协同”。

我们还是通过示例中的三个集群来讲解Intuit 走向Admiral 管理集群的路程。

image.gif编辑

起先,为了实现多集群的统一管理,最容易想到的就是多集群使用一个共享的控制平面。所有Envoy 代理都直接连接到这个共享控制平面。同时,通过共享一个根CA进行身份验证和加密,实现跨集群的服务认证。但这种方案不能识别部署在不同名称空间中的工作负载,也没有将命名方案与名称空间解耦。此外,Istio配置点在一个与服务分离的控制平面中,这让开发人员很尴尬。最后,这种方案的最大致命问题就是不能避免单点失败。

image.gif编辑

于是,有了改进方案,多集群控制平面。每个集群都有独立的控制平面,各集群运行的所有代理都可以从其集群内部控制平面获取其配置。但这也会遇到一个问题,那就是如何同步管理所有这些不同集群之间的配置?比如,图书订购服务如何知道支付服务实际部署在另一个集群中?它如何通过路由到达该集群?虽然Istio中有这样的配置功能,也可以实现这一点,但必须通过人工编辑,无法实现自动化。

而且,这种方案并没有真正地将名称空间与服务发现解耦。好在这个方案通过多空平面确实消除了单点故障。综合评估这个方案,其优势是单个集群工作得更稳定,但是在需要多集群之间联动时,有些功能可能就需要更加复杂的配置署。

Admiral 如何实现多集群管理

那么,如何解决这第二种方案的联动不足,Intuit 的答案是Admiral 。Admiral 为多集群 Istio 服务网格提供自动配置和服务发现功能,目前它在Github平台上Istio-ecosystem中,位列第一。虽然,Istio 拥有一套非常强大的多集群功能,但跨多个集群大规模管理配置对其来说仍然具有挑战性。

Admiral 对此配置拥有独特优势,并提供跨集群的自动配置和同步。Admiral 定义了两个自定义资源,即依赖关系和全局流量策略,它们用于在每个集群上为每个跨集群服务配置 ServiceEntries、VirtualServices 和 DestinationRules。这消除了开发人员和网格运营人员的工作复杂性。

image.gif编辑

最终,Intuit 基于Admiral结合多集群控制平面方案部署实现了更高级别、自动化的配置管理。在这个方案中,使用Admiral作为多个集群控制平面的“中介”,或者更确切的说作为各个集群控制平面的统一“控制器”,自动化将配置同步到所有集群中,使集群之间的服务能够相互通信。

Admiral创建服务可以使用的全局唯一名称,设置到这些服务的路由,从而将名称空间与服务配置分离。它还支持对同一个服务命名多个名称,将某些端到端场景固定在指定的区域路由中。这使得跨集群迁移部署变得轻松。它所做的就是随时侦测这些集群,然后跟随着集群的发展而变化。

Admiral本身并没有任何运行时状态。基本上,在这种方案中Istio管理的这些集群的所有状态实际上都下沉到每个集群本身。这意味着,如果Admiral“消失”了,集群中所有网格的当前运行状态不会有任何变化。因此,它不会影响任何运行时部署。

Istio服务网格在国内某银行的应用

尽管Istio技术能够解决如此复杂的业务问题,但是在国内落地的场景并不多,某城商行算是金融领域的先行者。为了落实“强后台,大中台,敏前台”技术战略,构建云原生技术体系,深入推进全行架构云化转型,持续进行应用服务化解耦,支撑产品快速迭代与低成本创新,某银行在灵雀云的支持下建立了完善的Service Mesh平台,将服务治理、应用监控、链路追踪等平台功能下沉到数据平面,解耦平台与业务功能。

image.gif编辑

平台的建立使得该行在应用无感知情况下提供灵活的服务治理和可观测能力,使业务开发人员更关注于业务开发,提升业务迭代速率,赋予开发人员更多创造性。

本期分享到此为止,小伙伴们不要忘记一键三连加收藏哦,还有关注博主不迷路,叶秋学长带你们上高速~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
151 9
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
6月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
592 33
|
6月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
338 19
|
6月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
7月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
218 10
|
6月前
|
运维 Kubernetes Cloud Native
云栖实录 | 智能运维:云原生大规模集群GitOps实践
云栖实录 | 智能运维:云原生大规模集群GitOps实践
219 1

热门文章

最新文章

推荐镜像

更多