ACK One舰队管理:企业级多集群管理解决方案

简介: ACK One舰队管理是阿里云为您提供的强大的多集群管理方案,功能众多:GitOps应用分发、多集群网关、多集群Service、全局可观测、服务网格、统一权限管理等,方便您轻松应对混合云、多集群、容灾等场景的问题,简化多集群管理。

【阅读原文】戳:ACK One舰队管理:企业级多集群管理解决方案

K8s多集群发展概述

 

 

随着企业业务发展,使用K8s多集群的必要性逐步凸显:

 

 

• 容灾、多活、高可用、低延迟:在多地域、多可用区部署业务,故障后迁移流量,提升业务可用性;在多个集群中部署业务分摊流量;多地域部署,就近访问降低延迟。

 

• 多云、混合云:云上统一管理IDC集群,大促等流量突发时使用云上弹性资源;跨多个云厂商,统一管理、避免厂商绑定。

 

• 业务和故障隔离:相比于基于命名空间的多租架构,使用多集群隔离不同属性业务,具有更好的隔离性和性能(如使用多集群划分dev、staging、production环境),同时也缩小了故障影响范围。

 

• 安全合规、单K8s集群节点和Pod有上限等。

 

针对以上多集群用例,诸多多集群或舰队管理方案应运而生,致力于高效、统一地管理多集群。多集群管理方案的发展,始自Kubernetes 1.5、1.6版本时,Kubernetes社区提出的KubeFed[1]项目。但 Federation v1由于API的扩展性差、管理复杂和成熟度不足等问题,已被社区归档,也并未被广泛使用。之后Federation v2做了大量改进设计,采用CRD机制扩展API,也被较为广泛认可和使用,但最终仍因一些设计缺陷无法被更为广泛地采用:

 

不兼容Kubernetes原生API,使用一套新的Fedrated API大幅增加使用者的学习成本。

 

缺乏扩展性,无法通过其僵化本质进行扩展,满足不同场景用例。

 

如今开源社区被广泛采用的多集群管理方案主要有Open Cluster Management(OCM)[2]、Karmada[3],同时各云厂商也都相继推出自己的多集群/舰队管理方案,如ACK One舰队管理[4]。

 

 

 

 

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

 

 

 

分布式云容器平台ACK One[5]是阿里云面向混合云、多集群、分布式计算、容灾等场景推出的企业级分布式云容器平台。通过ACK One 注册集群[6]将您的其他公共云厂商和IDC K8s集群接入到阿里云容器服务ACK控制台,并由ACK One舰队对这些注册集群以及云上的ACK、ACK Edge集群进行统一管理,实现多集群统一的应用分发,流量管理,运维管理,安全管理等。

 

 

ACK One舰队管理是基于开源社区的Open Cluster Management(OCM)构建的统一管理多集群的解决方案。舰队实例由ACK托管,可帮您省去大量的运维工作,从而专注于业务开发。

 

 

ACK One舰队包含以下核心能力:

 

1. ACK One GitOps[7]:托管ArgoCD实现的多集群应用的持续部署。

 

2. 多集群网关[8]:多集群Ingress,统一管理多集群的南北向流量,实现跨可用区高可用、标签路由等。

 

3. 多集群Service[9]:实现K8s社区标准的多集群服务API[10],跨集群服务发现。

 

4. 全局监控[11]:Prometheus全局聚合实例,统一多集群监控视图。

 

5. 服务网格:集成ASM,管理多集群服务间的东西向流量。

 

6. 统一的权限管理:统一管理RAM用户或角色的多集群的RBAC权限。

 

7. 多集群作业调度与分发[12]:支持Spark、TansorFlw和K8s Job/CronJob的优先级队列和多租调度。

 

 

 

 

ACK One GitOps

 

 

 

CNCF于2023年底发布的一项评估GitOps使用趋势的微观调查结果[13],其数据显示GitOps已经成为大多数开发者实现快速、一致、安全交付的首要选择。

 

 

ACK One GitOps基于CNCF毕业项目Argo CD构建,提供了面向多云、多集群、混合云的多集群应用GitOps持续交付能力。通过全托管Argo CD[14],集成ACK One的多集群、阿里云的RAM SSO等能力,为您提供开箱即用的ArgoCD能力,和完整、安全的多集群应用GitOps CD体验,快速、一致、安全地实现混合云、多集群下的应用持续部署。

 

 

1. 开发者通过ArgoCD UI/CLI/Go SDK创建 Application或者ApplicationSet,部署应用。

 

2. 开发者更新新镜像到镜像仓库,Image Updater检测到镜像更新后,将新tag更新到Git仓库的yaml中。

 

3. ArgoCD定时同步Git仓库的应用状态到云上、云下集群(GitOps中Secret管理基于KMS实现)。

 

4. 应用同步过程中状态变化实时钉钉通知。

 

ACK One GitOps具有如下优势:

 

• 托管开源ArgoCD,开箱即用,免运维,提供ArgoCD原生CLI和UI体验。

 

• 专属ArgoCD控制台域名,集成阿里云RAM用户/角色SSO登录,支持ArgoCD多租权限管理。

 

• 混合云、多集群分发,ACK One关联子集群自动加入ArgoCD,成为应用分发GitOps的目标集群。

 

• 支持ArgoCD ApplicationSet控制台,提升多集群应用分发体验。

 

• 更安全地发布多集群应用:支持GitOps中的 Secret管理,和ServiceAccount级别权限访问子集群。

 

 

 

客户案例 1:

多团队协同的混合云多集群应用的持续部署

 

 

当前有多个ACK One客户使用GitOps来构建跨多团队协同的、混合云多集群的应用持续部署,ACK One舰队管理混合云云上、云下数十个集群,并使用 GitOps实现数千应用的快速部署。ACK One会自动将关联子集群加入ArgoCD,成为应用分发的目标集群,简化了多集群应用分发流程。

 

GitOps涉及的多租权限管理主要有:为RAM用户和 RAM角色授予ArgoCD RBAC的权限[15],和通过 ArgoCD Projects管理RAM用户和RAM角色对目标集群、仓库、应用(Application)的RBAC权限。

 

 

跨多团队协同的、混合云多集群的应用持续部署案例的构建步骤为以下4步:

 

1. 通过ACK One注册集群将IDC集群注册到阿里云上。

 

2. ACK One舰队通过关联集群,统一管理云上多地域的ACK集群和云下IDC集群。

 

3. 通过ACK One GitOps快速部署应用到云上、云下集群。

 

4. 在ArgoCD UI上为不同RAM用户或角色配置不同的应用级别的权限控制,然后使用RAM用户或角色 SSO到ArgoCD UI验证其自身权限。详情可参考GitOps用户管理[16]。

 

 

 

客户案例 2:

构建Git事件驱动的自动化CI/CD Pipeline

 

 

ACK One Serverless Argo工作流集群[17](Argo Workflows)是ACK One全托管的Argo Workflows,并提升了其性能、稳定性、可观测、运维能力等。阿里云事件总线EventBridge[18]是阿里云提供的无服务器事件总线服务,在可用性、易用性、安全性等多方面具有显著优势。

 

ACK One GitOps结合此二者(EventBridge+Argo Workflows+Argo CD),可以简单快速、高效、低成本地交付您的应用,为您实现代码提交即交付的自动化CI/CD系统。CI Pipeline的构建请详见基于 EventBridge的事件驱动CI Pipeline[19]。

 

 

1. 用户向Git仓库提交代码(push commit)。

 

2. EventBridge根据配置的规则,Git事件触发其向ACK One工作流集群提交CI 工作流。

 

3. 基于ACK One工作流集群的CI工作流[20]来构建Docker Image,并推送至镜像仓库(ACR EE)中。

 

4. 通过GitOps自动同步相应镜像变化至ACK集群。

 

 

 

 

多集群网关

 

 

 

ACK One多集群网关是ACK One为多云、多集群环境提供的云原生网关,统一管理一个地域的多个集群的七层南北流量。ACK One通过托管MSE Ingress,以Ingress API来定义流量路由规则,支持跨多集群的多种能力:HTTP Routing、traffic splitting、health-based自动平滑容灾、traffic mirroring、基于副本数负载均衡流量等。您可以使用多集群网关构建同城容灾、标签路由、权重路由等能力。

 

 

多集群网关具有以下优势:

 

• 地域级别的多集群Global Ingress,统一管理多集群南北7层流量。

 

• 简化多集群流量管理:在舰队实例中统一完成多集群Ingress规则设置,无需单独操作每个子集群。且兼容Nginx Ingress。

 

• 多集群网关自身是跨AZ高可用的。

 

• 毫秒级Fallback:某集群后端故障时,多集群网关平滑迁移流量到其他后端。

 

• 网关托管,免运维。

 

 

 

客户案例:

多集群、混合云同城容灾

 

 

搭建混合云容灾系统需要以下5步,详细请参考基于 ACK One构建混合云同城容灾系统[21]:

 

1. 使用ACK One注册集群管理IDC/第三方公共云K8s集群。

 

2. 实现云下网络与云上VPC的互联互通。

 

3. 创建ACK One舰队并关联集群。

 

4. 使用ACK One GitOps发布应用到多个集群(可选)。

 

5. 使用ACK One多集群网关管理多集群流量。

 

 

 

 

 

多集群Service

 

 

 

ACK One舰队管理通过实现K8s社区标准的多集群服务API的多集群Service实现跨集群的服务发现,可以在以下场景帮助您:

 

 

1. 高可用性:多个集群运行同一个核心Service。

 

2. 有状态Service和无状态Service:隔离部署,有状态服务读写分离。

 

3. 共享Service:多集群共享的Service,例如监控/密钥服务。

 

4. 迁移:一个Service部署到2个集群,逐步迁移。如云下迁移到云上。

 

以下是ACK One多集群Service的架构:

 

1. 图中链路1为管控链路,Fleet实例管理关联集群Kubernetes服务的导出与导入。

 

• 通过在集群ACK Cluster 1上创建服务导出 ServiceExport对象,ACK Cluster 1成为服务提供者,将服务Service 1设置为允许集群外访问。

 

• 通过在集群ACK Cluster 2上创建服务导入 ServiceImport对象,ACK Cluster 2成为服务消费者,访问服务提供者导出的服务。

 

2. 图中链路2为数据链路,在ACK Cluster 1导出 Service 1服务,ACK Cluster 2导入Service 1服务后,ACK Cluster 2可以访问ACK Cluster 1的 Service 1服务。实现跨集群的Kubernetes服务访问。

 

 

下图是为了实现Cluster 2上的Client Pod跨集群访问Cluster 1上service1服务,多集群Service原理如下:

 

1. ACK One舰队实例中有个名为Multi-cluster Service Controller的组件,其负责监听用户创建的ServiceExport(导出服务)和ServiceImport(导入服务)。

 

2. 导出服务时获取service1的后端,在导入服务时将这些后端创建于EndpointSlice中,与ServiceImport进行关联。

 

3. 并在导入服务时,创建amcs-为前缀的Service amcs-service1,与EndpointSlice关联。

 

4. 最终Cluster 2中的Client Pod可以通过两种域名跨集群访问Cluster 1中的service1:

 

a.service1.provider-ns.svc.clusterset.local:

Client Pod通过该域名访问需要在CoreDNS中开启多集群插件,其后Client Pod解析该域名会返回 ServiceImport的IP,最终可以通过与其关联的 EndpointSlice中的IPs访问到Cluster1的Pods。

 

b.amcs-service1.provider-ns.svc.cluster.local:

Client Pod通过该域名访问,K8s集群中正常的 Service域名解析,通过关联的EndpointSlice中的 IPs访问到Cluster1的Pods。

 

 

 

 

客户案例:

Headless多集群Service跨集群访问有状态服务指定实例

 

 

如对于MySQL服务,可以使用该能力可以实现 MySQL主从集群的读写分离,以提升性能和吞吐量,并提升系统的可靠性和容错性。

 

通过Headless多集群Service跨集群访问有状态服务的指定实例[22]主要步骤如下:

 

1. ACK One舰队实例管理关联集群(ACK Cluster 1、ACK Cluster 2)中MySQL服务的导出与导入。

 

2. ACK Cluster 1作为服务提供者集群,在ACK Cluster 1上创建MySQL服务,和ServiceExport对象以导出服务。

 

3. ACK Cluster 2作为服务消费者集群,在ACK Cluster 2上创建ServiceImport对象以导入服务。

 

4. 在Cluster 2中,Client Pod可通过指定Pod实例名的域名跨集群访问Cluster 1中的MySQL服务的某个Pod实例,如通过以下两个域名都是访问到mysql-0:

 

a.mysql-0.mysql.provider-ns.svc.clusterset.local

 

b.mysql-0.amcs-mysql.provider-ns.svc.cluster.local

 

 

 

 

 

全局监控

 

 

 

ACK One舰队管理的全局可观测,包含全局监控、全局FinOps,另外包含全局事件中心等在建能力。

 

ACK One舰队管理统一管理各种K8s集群,屏蔽管控差异,再结合阿里云可观测监控Prometheus版的聚合实例聚合各集群的指标,为您提供全局统一的监控视图,助力您的业务稳定运行。

 

 

 

 

 

总结

 

 

 

ACK One舰队管理是阿里云为您提供的强大的多集群管理方案,功能众多:GitOps应用分发、多集群网关、多集群Service、全局可观测、服务网格、统一权限管理和多集群作业调度与分发,方便您轻松应对混合云、多集群、容灾等场景的问题,简化多集群管理。托管的舰队实例(K8s集群)、托管的ArgoCD等也最小化您的运维工作,让您更加专注于业务开发。

 

欢迎加入ACK One客户交流钉钉与我们一同交流。(钉钉群号:35688562)

 

相关链接:

 

[1] KubeFed

https://github.com/kubernetes-sigs/kubefed

 

[2] Open Cluster Management(OCM)

https://open-cluster-management.io/

 

[3] Karmada

https://karmada.io/

 

[4] ACK One舰队管理

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/fleet-management/

 

[5] 分布式云容器平台ACK One

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/product-overview/ack-one-overview

 

[6] ACK One注册集群

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/overview-9

 

[7] ACK One GitOps

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/gitops/

 

[8] 多集群网关

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/multi-cluster-gateway-overview

 

[9] 多集群Service

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/mcs-overview

 

[10] 多集群服务API

https://multicluster.sigs.k8s.io/concepts/multicluster-services-api/

 

[11] 全局监控

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/global-monitoring

 

[12] 多集群作业调度与分发

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/workload-distribution/

 

[13] 微观调查结果

https://www.cncf.io/blog/2023/11/07/cncf-gitops-microsurvey-learning-on-the-job-as-gitops-goes-mainstream/

 

[14] Argo CD

https://argoproj.github.io/cd/

 

[15] ArgoCD RBAC的权限

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/manage-users-based-on-gitops?spm=a2c4g.11186623.0.0.43be734fVamflQ#6f2facdfddgxr

 

[16] GitOps用户管理

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/manage-users-based-on-gitops?spm=a2c4g.11186623.0.0.448d9c2bUi8A8Z#d7b0b14880bq3

 

[17] ACK One Serverless Argo工作流集群

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/overview-12

 

[18] 事件总线EventBridge

https://help.aliyun.com/zh/eventbridge/product-overview/what-is-eventbridge

 

[19] 基于EventBridge的事件驱动CI Pipeline

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/use-cases/event-driven-ci-pipeline-based-on-eventbridge

 

[20] ACK One工作流集群的CI工作流

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/use-cases/building-a-ci-pipeline-of-golang-project-based-on-workflow-cluster

 

[21] 基于ACK One构建混合云同城容灾系统

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/use-cases/construction-of-hybrid-cloud-disaster-recovery-system-based-on-ack-one

 

[22] 通过Headless多集群Service跨集群访问有状态服务的指定实例

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/cross-cluster-access-to-a-specified-stateful-service-instance-through-a-headless-multi-cluster-service


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信、微博、知乎

获取关于我们的更多信息~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
运维 Kubernetes Cloud Native
智联招聘 × 阿里云 ACK One:云端弹性算力颠覆传统 IDC 架构,打造春招技术新范式
在 2025 年春季招聘季的激战中,智联招聘凭借阿里云 ACK One 注册集群与弹性 ACS 算力的深度融合,成功突破传统 IDC 机房的算力瓶颈,以云上弹性架构支撑千万级用户的高并发访问,实现招聘服务效率与稳定性的双重跃升。
|
Kubernetes Devops 应用服务中间件
基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线
本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。
1460 2
|
运维 监控 Cloud Native
智联招聘 × 阿里云 ACK One:云端弹性算力颠覆传统 IDC 架构,打造春招技术新范式
在 2025 年春季招聘季的激战中,智联招聘凭借阿里云 ACK One 注册集群与弹性 ACS 算力的深度融合,成功突破传统 IDC 机房的算力瓶颈,以云上弹性架构支撑千万级用户的高并发访问,实现招聘服务效率与稳定性的双重跃升。文章介绍了 ACK One+ACS 的弹性架构如何解决了春招的燃眉之急,让智联招聘的技术团队能够聚焦创新业务开发,欢迎关注。
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
1319 9
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
运维 Kubernetes 持续交付
ACK One GitOps:让全球化游戏服务持续交付更简单
ACK One GitOps 致力于提供开箱即用的多集群 GitOps 持续交付能力,简化游戏等服务的多集群/多地域统一部署,让您更加专注于业务开发。
|
人工智能 Serverless 调度
突破地域限制,实现算力无限供给 -- 阿里云ACK One注册集群开启多地域Serverless算力调度
传统单地域算力难以支撑AI推理场景的高并发实时响应、突发高流量的要求,阿里云容器服务ACK One注册集群推出多地域Serverless算力调度方案完美解决此问题。
|
人工智能 Serverless 调度
突破地域限制,实现算力无限供给 —阿里云ACK One注册集群开启多地域Serverless算力调度
本文介绍了阿里云ACK One注册集群多地域Serverless算力调度解决方案,解决传统数据中心在AI时代面临的算力不足问题。方案通过分钟级接入、100%兼容Kubernetes操作及云上Serverless弹性,实现跨地域弹性算力供给,支持高并发请求与模型快速迭代。文中详细描述了快速接入步骤、指定地域调度及动态调度方法,并提供了相关代码示例。该方案助力企业实现AI推理服务的规模化部署,提升商业落地效率。
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
1007 1
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
681 89

热门文章

最新文章

推荐镜像

更多