基于 ACK One 实现简单的跨云协同,让业务管理更高效

作者:庄宇

本文根据 2023 云栖大会现场分享实录整理

图片

2 年前的云栖大会,我们发布分布式云容器平台 ACK One,随着 2 年的发展,很高兴看到 ACK One 在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下 ACK One 2年来的发展,如何帮助客户解决分布式领域多云多集群管理的挑战。

首先我们会介绍下分布式云容器平台 ACK One 的背景与架构,之后详细介绍 ACK One 各个功能与应对的业务场景,包括注册集群、边缘集群、多集群舰队、全托管 Argo 工作流集群。

Part 1:分布式云容器平台 ACK One,解决企业多云多集群管理挑战

图片

我看下 ACK One 这个产品出现的背景,Gartner 报告中预测到 2025 年,50% 的大型企业将通过分布式云实现业务转型,在 Forrester 报告中,未来 89% 的企业至少使用两个云,74% 的企业至少使用三个云。在 ACK 的用户中,我们也看到同样的趋势,越来越多的用户选择多云多集群架构,来应对业务发展带来的挑战。

可以说,分布式云已经成为新常态。同时 Gartner 报告中指出,安全,运维复杂性,财务复杂性是多云多集群架构的主要挑战。

为了应对分布式云带来的挑战,我们构建了分布式云容器平台 ACK One。

图片

ACK One 提供多云多集群管理解决方案。ACK One 可以统一接入不同形态\不同位置的 K8s 集群,例如:公共云 ACK 集群,边缘集群,本地数据中心中的集群,和第三方公共云集群。接入后,ACK One 提供云上云下一致的运维体验包括:监控日志、成本分析、安全加固、备份容灾、微服务治理等。极氪汽车使用 ACK One 统一管理多个 K8s 集群,提升了安全水位和业务连续性,减少 25% 的资源用量,运维效率提高80%。

为了解决本地数据中心弹性不足,无法应对业务高峰的问题,ACK One 支持云上弹性,将云上无限算力接入到本地数据中心 K8s 集群中,并实现云上云下混合调度。智联招聘使用 ACK One 云上弹性能力,5 分钟实现业务数万核扩容,应对招聘季业务高峰。

同时,ACK One 支持多集群舰队管理,提供一个控制面管理多个 K8s 集群,提供统一应用分发、南北流量管理、统一运维管理等能力。

Part 2:ACK One 注册集群:接入和管理不同形态K8s集群

下图展示的是 ACK One 注册集群的架构,我们可以将三方公共云中的 K8s 集群和本地数据中心的自建 K8s 集群接入到 ACK One 注册集群中。

图片

首先,您要有一个 K8s 集群,之后在 K8s 集群安装注册集群的 agent pod,Agent pod 会反向连接 ACK One 注册集群服务端并完成管控通道的建立,之后,ACK One 注册集群管控可以下发 K8s API 请求,并通过 Agent pod 的中转到自建 K8s 集群的 API Server 中。从而通过 ACK One 注册集群,可以获得云上云下一致的运维体验。

具体来说包括: ASM 服务网格,微服务引擎 MSE,Prometheus 监控,ARMS 应用性能监控,SLS 日志,安全,FinOps。以上所有云上 ACK 集群具备的能力,都可以通过注册集群在三方公共云 K8s 集群和自建 K8s 集群中落地实现。

另外,为了应对本地数据中心资源不足,无法应对业务流量增长的问题,ACK One 注册集群支持云上弹性,可以将云上的 ECS/ECI 计算资源,包括 CPU 和 GPU 资源,加入到自建 K8s 集群中,由自建 K8s 调度云上资源,应对业务流量增长。

可以说,您依然完全控制自建 K8s 集群,同时,获得了云上 ACK 集群才具有的强大扩展能力。

图片

通过 ACK One 注册集群,可以让阿里云优势的软件和服务实现 Anywhere,不再仅服务于阿里云容器服务 ACK 集群,也可以扩展到本地数据中心自建 K8s 集群,第三方公共云 K8s 集群中。包括:ECS/ECI 等 IaaS 资源,可观测服务,服务治理,FinOps 成本管理,安全等。使用注册集群,您依然完全控制自建的 K8s 集群,但同时获得了阿里云云产品带来的扩展能力。

图片

场景 1: 云上弹性,通过云上弹性,我们可以将云上的计算资源加入到本地数据中自建 K8s 集群中,应对业务流量的增长。同时,注册集群调度器支持对不同计算资源设置不同的调度优先级,例如:可以优先调度本地数据中心中的节点,当本地数据中心资源用尽后,调度使用云上的按量计费节点池 ECS,或者使用云上 Virtual Node 弹性容器实例 ECI 处理业务流量。在充分使用本地计算资源后,再使用云上资源,节省成本。

图片

场景 2: 可观测性。通过注册集群,可以将 ACK 集群的可观测能力,包括监控/日志/事件/告警,下沉到自建 K8s 集成中,一套可观测方案,同时用于容器服务 ACK 集群,自建 K8s 集群,三方公共云 K8s 集群,实现云上云下一致的运维体验。

图片

容器服务 ACK 集群具有强大的安全管理能力,包括配置巡检、运行时安全检查和策略管理。通过注册集群,可以将 ACK 集群的安全能力,下沉到自建 K8s 集群和三方公共云 K8s 集群中。通过一个安全大盘,查看管理所有集群的安全风险,提高安全水位。

图片

在成本治理方面,容器服务 ACK 提供完整的方案,支持以集群、命名空间、节点池、应用多角度的成本洞察,基于洞察结果实施成本的治理,包括浪费发现、成本预测、预算告警等。通过注册集群,可以使用 ACK 集群的成本管理能力,分析和治理自建 K8s 集群和三方公共云 K8s 集群,降低成本。

图片

场景 5: 应用与数据的备份恢复,通过注册集群,可以使用云上数据备份与恢复能力,备份自建 K8s 集群和第三方公共云 K8s 集群中的应用与数据,并在 ACK 集群中恢复 ,实现跨地域的应用与数据容灾。

图片

场景 6: 混合云跨云数据访问。为了应对存算分离架构带来数据访问接口类型多和访问速度慢的问题,通过注册集群和 ACK Fluid 组件,可以通过标准 PV/PVC 接口实现云上计算实例访问云下自建存储资源,也可以通过 Fluid 分布式缓存加速云下计算资源访问云上 OSS 对象存储,缩短 GPU 等高成本计算资源的等待时间,提高了运行速度,降低计算成本。

图片

阿里云提供强大的微服务治理能力,包括微服务引擎 MSE 和服务网格 ASM,通过注册集群的控制面连接,云上 MSE 和 ASM 可以管理三方公共云和本地数据中心 K8s 集群中的微服务。实现一套微服务方案,管理所有集群的微服务,降低运维复杂度,提高了稳定性。

Part 3:ACK Edge 边缘集群:接入和管理边缘计算资源

边缘集群 - 接入和管理边缘计算资源下面我们介绍一下边缘集群,边缘集群可以接入和管理边缘的计算资源,也就是机器和各种终端设备。您可以在云上创建边缘集群,并将边缘的机器和设备远程接入云上集群,实现通过标准 K8s 集群的方式调度使用这些机器和设备,从而省去在边缘自建集群的成本。

图片

下面我们看下边缘集群的架构,上半部分是边缘集群 ACK Edge 的控制面,在阿里云上,复用 ACK Pro 的控制面(APIServer/ETCD 等),保证稳定性,集成开源 OpenYurt 提供边缘节点自治能力,最后融合了阿里云的日志监控安全能力。下半部分是边缘部分,可以接入管理数据中心或者机房中的机器,包括 CDN、IDC、工厂、园区、楼宇等。也可以接入各种终端设备,包括车载、交通设备等。

淘麦郎使用边缘集群 ACK Edge,提供验票服务,人均验票时间缩短 70%,成功服务了北京冬奥会和杭州亚运会等大型赛事;影石使用边缘集群 ACK Edge,管理工厂中的计算设备,从云端直接下发指令到达工厂,极大提高了生产效率。

图片

OpenYurt 是业界首个非侵入的云边协同的云原生平台,在中间的架构图中可以看到,master 组件部署在云端,可以方便的管理分散的边缘机器和设备。图中蓝色框是原生 K8s 组件,橙色框中表示的是 OpenYurt 组件。OpenYurt 没有对 K8s 做任何修改,保证 OpenYurt 很容易集成与被集成 。OpenYurt 的核心能力主要 4 个方面,多地域应用管理,边缘自治,跨地域网络通信,以及云原生设备管理。

Part 4:ACK One 多集群舰队:统一管理多个 K8s 集群

之前讲到的注册集群和边缘集群解决了各种形态位置的集群和边缘计算资源接入到云上的问题。

图片

下面我们介绍,当我们有多个 K8s 集群的时候,如何统一管理,就要 ACK One 多集群舰队。

首先我们看下多集群舰队的架构,多集群舰队集成使用开源 Open Cluster Management,统一管理多个 K8s 集群,可以是公共云的 ACK 集群,本地数据中心 K8s 集群。多集群舰队对用户提供统一的控制面,提供应用分发,流量控制,安全策略,全局监控等多集群管理能力 。

图片

我们来看多集群的应用分发,多集群舰队托管了开源 ArgoCD 提供 GitOps 应用分发能力,开发团队可以通过在 Git 中定义应用部署 yaml 文件,实现应用的多集群部署。

使用 GitOps 具有强可靠性。Git 作为部署的唯一来源,提供了版本控制、回滚和审计能力。同时开发人员也不需要任何 K8s 集群的权限, 安全性高。最后,GitOps提供持续部署的能力,保证集群中应用的状态和 Git 仓库中定义的状态一致,避免误操作,保证稳定性。

ACK One 多集群 GitOps 在此基础上,提供了原生 ArgoCD 的 CLI 和 UI 体验,并提供专属的 ArgoCD 控制台域名,集成阿里云账号 SSO,支持多用户权限等。

图片

基于 ACK One GitOps 实现多集群 CICD 流程。在流程图中,我们首先向业务代码仓库提交代码修改,之后由 ACR EE 或者全托管 Argo 工作流集群构建并推送镜像到 ACR EE,ACK One GtiOps 检查ACR EE中镜像版本的变更,并回写到应用部署仓库,也就是修改部署 yaml,ACK One GtiOps 自动向 Dev 集群部署新的镜像版本,在验证通过后,在维护窗口可以手工向生产集群部署。实现了从 CI 到多集群部署的完整 CICD 流程。

图片

下面我们来看多集群南北流量管理,为了保证应用的容灾,我们一般会在不同可用区的 2 个集群部署相同的应用,并在前端部署负载均衡,传统的负载均衡一般会采用智能 DNS 的方案或者 4 层 LoadBalancer 方案,但 DNS 方案的问题在于客户端缓存,导致在问题发生时,切换不及时,造成业务损失。4 层 LoadBalancer 无法实现基于 7 层的路由转发,灵活性差。

为了解决这个问题,我们推出多集群网关,提供全局 Ingress,实现七层的负载均衡,多集群网关本身也支持跨可用区的高可用。因为是七层的网关,我们可以灵活的定制路由,实现基于权重、http header、自动 fallback 的路由策略。通过多集群网关,我们可以实现应用同城多可用区多活容灾。在应用完成多集群部署后,我们还需要对应用的状态进行监控,ACK One 舰队管理提供多集群全局监控功能,汇总多个集群的监控指标,提供多集群视角的全局监控大盘。在截图中可以看到,一个大盘可以查看集群 1 和集群 2 的监控指标。

图片

Part 5:全托管 Argo 工作流集群全新发布

最后一部分,我来介绍下全托管 Argo 工作流集群。

图片

随着科技的发展,仿真计算、科学计算等离线作业在企业中的应用越来越多,在云原生领域,如何编排以及高效、低成本运行这些离线作业,是必须回答的问题。

ACK One 推出全托管跨地域 Argo 工作流集群,托管 CNCF 毕业项目 Argo Workflow,使用弹性容器实例 ECI,以无服务器方式在多可用区/多地域调度运行工作流,支持大规模工作流运行的同时降低计算成本。

为了应对 AI 等数据密集性业务和存算分离架构,Argo 工作流集群支持分布式数据缓存,加速文件访问,减少运行时间,降低成本。

此外:全托管 Argo 工作流集群支持:

  • 资源预测 – 通过负载感知自动调整资源规格
  • 规模化计算 – 控制面进行了性能优化支持千级别并发工作流,数万 Pod 并行计算任务
  • 事件驱动 - 支持 Git、阿里云 MNS、OSS 等事件源触发工作流自动运行

相比开源自建 Argo 工作流系统,利用 Serverless 技术,全托管 Argo 工作流集群可实现 30% 的资源成本节省;利用分布式数据缓存,数据读性能提高 15 倍;通过控制面优化和云上极致弹性,最大并行计算规模提升 10 倍。

泛生子使用全托管 Argo 工作流集群在 12 小时内完成处理数千例样本的处理,速度提升 50%,成本下降 30%。

图片

看下分布式 Argo 工作流集群的架构,它托管开源 Argo workflow,提供开源原生的 CLI、UI、API、SDK 等接口,保证现有开源自建 Argo 工作流系统可无缝迁移。同时,可以使用工作流集群的 API SDK 接口,包装工作流集群,构建自己的工作流提交系统,以适应具体的业务场景。我们很多仿真和科学计算客户就是将工作流集群作为后端引擎使用。

工作流集群托管 Argo event 项目,支持事件驱动编程模型,支持 Git、阿里云 OSS、MNS、EventBridge 等事件源触发工作流自动运行,自动完成 CI、数据处理等离线任务。

分布式 Argo 工作流集群使用 Serverless 方式运行工作流,无需运维 worker 节点,利用云上极致算力资源,可实现同时运行数万 Pod 的大规模工作流, 同时提供监控日志等开箱即用的运维体验。

图片

最后,我们简单总结下,分布式云面对的场景多种多样,挑战很多,为此,ACK One 提供注册集群能力,可以将非ACK集群接入ACK One,从而实现云上云下集群统一管理。ACK One 提供边缘集群,实现云上集群管理边缘机器与设备,同时实现边缘自治。

多集群舰队提供多集群 GitOps 和全局 Ingress 实现应用的同城多活容灾。全托管 Argo 工作流集群,实现工作流的编排,以 Serverless 方式运行工作流,降低成本,应对持续集成、科学计算、仿真计算、数据处理等场景。

大家可以根据具体业务场景选择相应的能力,最终实现简单的跨云协同,让业务管理更加高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中心性算法归纳

中心性算法不仅是在我所学习的计算机网络当中起很重要的作用,在交通网络、社交网络、信息网络、神经网络当中也有很多的应用例子。今天我在这里总结一下场景的几种中心性算法。 参考文献 Python NetworkX库 偏心中心性(Eccentricity Centrality&#x…

银河麒麟v10 rpm安装包 安装mysql 8.35

银河麒麟v10 rpm安装包 安装mysql 8.35 1、卸载mariadb2、下载Mysql安装包3、安装Mysql 8.353.1、安装Mysql 8.353.3、安装后配置 1、卸载mariadb 由于银河麒麟v10系统默认安装了mariadb 会与Mysql相冲突,因此首先需要卸载系统自带的mariadb 查看系统上默认安装的M…

网络安全行业术语

病毒 是在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码。 抓鸡 利用使用大量的程序的漏洞,使用自动化方式获取肉鸡的行为,即设法控制电脑,将其沦为肉…

采用SpringBoot框架+原生HTML、JS前后端分离模式开发和部署的电子病历编辑器源码(电子病历评级4级)

概述: 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息,包括&…

网络协议-BIO实战和NIO编程

网络通信编程基本常识 原生JDK网络编程-BIO 原生JDK网络编程-NIO Buffer 的读写 向 Buffer 中写数据 写数据到 Buffer有两种方式: 1. 读取 Channel写到 Buffer。 2.通过 Buffer 的 put0方法写到 Buffer 里。 从 Channel 写到 Buffer …

力扣经典面试题——搜索二维矩阵(两次二分搜索)

https://leetcode.cn/problems/search-a-2d-matrix/description/?envTypestudy-plan-v2&envIdtop-100-liked 思路:先按行二分,再按列进行二分。即先找到对应的行,再找对应的列。 对于这种判断是否存在某个数,记得while(left…

[JS设计模式]Mixin Pattern

Mixin是一个对象,我们可以使用它来为另一个对象或类添加可重用的功能,而无需使用继承。我们不能单独使用mixins:它们的唯一目的是在没有继承的情况下向对象或类添加功能。 假设对于我们的应用程序,我们需要创建多个狗。然而,我们…

【错误记录/js】保存octet-stream为文件后数据错乱

目录 说在前面场景解决方式其他 说在前面 后端:go、gin浏览器:Microsoft Edge 120.0.2210.77 (正式版本) (64 位) 场景 前端通过点击按钮来下载一些文件,但是文件内容是一些非文件形式存储的二进制数据。 后端代码 r : gin.Default()r.Stat…

MyBatis见解2

5.MyBatis的原始Dao开发-了解 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式,这种方式总体上更加简便。我们的课程讲解也主要以接口代理开发方式为主。在第4节已经…

冒泡排序之C++实现

描述 冒泡排序算法是一种简单的排序算法,它通过将相邻的元素进行比较并交换位置来实现排序。冒泡排序的基本思想是,每一轮将未排序部分的最大元素逐个向右移动到已排序部分的最右边,直到所有元素都按照从小到大的顺序排列。 冒泡排序的算法…

阿里云 ARMS 应用监控重磅支持 Java 21

作者:牧思 & 山猎 前言 今年的 9 月 19 日,作为最新的 LTS (Long Term Support) Java 版本,Java 21 正式 GA,带来了不少重量级的更新,详情请参考 The Arrival of Java 21 [ 1] 。虽然目前 Java 11 和 Java 17 都…

前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度

本文涉及知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 单调双队列 贪心 题目 给你一个下标从 0 开始的整数数组 nums 。 你可以执行任意次操作。每次操作中,你需要选择一个 子数组 ,并将这个子数组用它所…

python脚本 ssh工具 ssh上传文档 选择文档并上传到ssh服务器

此文分享一个python脚本,用于快速的定位、选择文档,并将其上传到指定的ssh服务器。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,我们需要定位并选择需要上传的文档 👇第三步,确认我们需要上传文档的ssh服务器 👇第四步,定位、选择…

Qt的简单游戏实现提供完整代码

文章目录 1 项目简介2 项目基本配置2.1 创建项目2.2 添加资源 3 主场景3.1 设置游戏主场景配置3.2 设置背景图片3.3 创建开始按钮3.4 开始按钮跳跃特效实现3.5 创建选择关卡场景3.6 点击开始按钮进入选择关卡场景 4 选择关卡场景4.1场景基本设置4.2 背景设置4.3 创建返回按钮4.…

模式识别与机器学习(十一):Bagging

1.原理 Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得…

【JAVA】分布式链路追踪技术概论

目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 1.概述 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题:…

网络基础知识制作网线了解、集线器、交换机与路由器

目录 一、网线的制作 1.1、材料 1.2、网线的标准类别 二、集线器、交换机介绍 2.1、概念: 2.2、OSI七层模型 2.3、TCP/IP四层 三、路由器的配置 3.1、概念 3.2、四个模块 1、 网络状态 2、设备管理 3、应用管理 无人设备接入控制 无线桥接 信号调节…

VS(Visual Studio)更改文件编码

vs默认编码是GB2312,更改为UTF-8 工具->自定义

【数据结构入门精讲 | 第十篇】考研408排序算法专项练习(二)

在上文中我们进行了排序算法的判断题、选择题的专项练习,在这一篇中我们将进行排序算法中编程题的练习。 目录 编程题R7-1 字符串的冒泡排序R7-1 抢红包R7-1 PAT排名汇总R7-2 统计工龄R7-1 插入排序还是堆排序R7-2 龙龙送外卖R7-3 家谱处理 编程题 R7-1 字符串的冒…

Java进阶(第六期): Arrays类(数组工具)、冒泡排序、选择排序、二分查找、【正则表达式】、Java正则爬取信息

文章目录 一、Arrays1.1代码示例: 二、冒泡排序2.1 代码示例 三、选择排序3.1 代码示例 四、二分查找4.1 代码示例 (这里采用乱序数组) 五、正则表达式5.1 正则表达式的基本使用5.2 正则表达式爬取信息练习 Java进阶(第六期&#…