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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 基于 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 方式运行工作流,降低成本,应对持续集成、科学计算、仿真计算、数据处理等场景。


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


点击此处,订阅本场分享回放。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同
在当今快速迭代和部署应用程序的背景下,微服务架构已成为企业开发的首选模式。此文章通过深入分析Docker容器化技术和Kubernetes集群管理工具,探讨了如何利用这两者协同工作以构建和维护一个高效的微服务系统。我们将剖析Docker和Kubernetes的核心原理,并展示它们如何简化部署流程、提高系统的可伸缩性和可靠性。本文旨在为开发者提供一套实践指南,帮助其在云原生时代下,构建出既灵活又强大的后端服务。
|
7天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
5月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同应用
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为实现系统模块化、提升可维护性及扩展性的关键策略。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理,共同构建一个既高效又可靠的后端微服务环境。我们将剖析Docker和Kubernetes的核心功能,以及它们如何相辅相成,支撑起现代化的云原生应用程序部署和管理。文章还将提供具体实践案例,帮助开发者理解将理论应用于实际开发过程中的步骤和考虑因素。
|
2月前
|
Kubernetes 监控 容灾
ACK One舰队管理:企业级多集群管理解决方案
ACK One舰队管理是阿里云为您提供的强大的多集群管理方案,功能众多:GitOps应用分发、多集群网关、多集群Service、全局可观测、服务网格、统一权限管理等,方便您轻松应对混合云、多集群、容灾等场景的问题,简化多集群管理。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【8月更文挑战第31天】 在云原生的世界里,容器技术是基石。本文将带你了解如何通过Kubernetes和Docker这两个强大的工具,搭建起你的云原生应用架构。我们将一起探索它们如何相互配合,提升开发与运维的效率。准备好了吗?让我们启航,探索云原生的奥秘!
|
3月前
|
运维 Kubernetes Docker
|
5月前
|
存储 Java Serverless
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
|
5月前
|
Kubernetes Cloud Native 持续交付
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
【5月更文挑战第7天】本文探讨了Docker和Kubernetes如何协同构建和管理云原生应用。Docker提供容器化技术,Kubernetes则负责容器的部署和管理。两者结合实现快速部署、自动扩展和高可用性。通过编写Dockerfile创建镜像,然后在Kubernetes中定义部署和服务进行应用暴露。实战部分展示了如何部署简单Web应用,包括编写Dockerfile、构建镜像、创建Kubernetes部署配置以及暴露服务。Kubernetes还具备自动扩展、滚动更新和健康检查等高级特性,为云原生应用管理提供全面支持。
106 7
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
|
5月前
|
存储 运维 分布式计算
分布式云容器平台ACK One概述
分布式云容器平台ACK One概述
101 2
|
5月前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同实践
【5月更文挑战第2天】随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性与效率的关键。本文将深入探讨如何利用Ansible作为配置管理工具,结合Kubernetes容器编排能力,共同打造一个高效、可靠的自动化运维体系。通过剖析二者的整合策略及具体操作步骤,为读者提供一套提升运维效率、降低人为错误的实用解决方案。

相关产品

  • 容器服务Kubernetes版
  • 下一篇
    无影云桌面