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

云原生系列二:如何实现跨数百个K8s集群的管理k8s集群最佳搭建方案

本文主要分享【k8s集群最佳搭建方案】,技术文章【云原生系列二:如何实现跨数百个K8s集群的管理】为【叶秋学长】投稿,如果你遇到云原生系列相关问题,本文相关知识或能到你。k8s集群最佳搭建方案

本文主要分享【k8s集群最佳搭建方案】,技术文章【云原生系列二:如何实现跨数百个K8s集群的管理】为【叶秋学长】投稿,如果你遇到云原生系列相关问题,本文相关知识或能到你。

k8s集群最佳搭建方案

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

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

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

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

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

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

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

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

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

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

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

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

Admiral 如何实现多集群管理

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

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

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

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

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

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

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

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

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

本文《云原生系列二:如何实现跨数百个K8s集群的管理》版权归叶秋学长所有,引用云原生系列二:如何实现跨数百个K8s集群的管理需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文通过基准测试(Benchmark)对.NET Core环境下Thrift和HTTP客户端的微服务通信性能进行对比分析。基准测试是一种评估系统或组件性能的方法,通过运行一系列标准化的测试来衡量其表现。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • 深入探索Node.js新框架:Nest.js第六篇
    在本文中,我们将深入探讨Node.js的新框架Nest.js,并通过一个完整的示例来展示其强大功能。我们将使用多个装饰器创建一个基本控制器,该控制器提供了多种方法来访问和操作内部数据,涵盖了常见的CRUD操作。此外,我们还将详细介绍Nest.js的核心概念和最佳实践,帮助读者更好地理解和应用这一现代框架。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • Spring Boot与Graylog集成实现微服务日志聚合与分析
    本文介绍了如何在Graylog中配置输入源,并详细说明了Spring Boot项目中集成Graylog的日志聚合和分析方法,包括logback.xml的多环境配置。 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
author-avatar
UP向日葵氵于磊Z
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有