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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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


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

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
23天前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
2月前
|
Kubernetes 容器
K8S的Service的LoadBanlance之Metallb解决方案
本文介绍了如何在Kubernetes中使用MetalLB来实现Service的LoadBalancer功能,包括MetalLB的部署、配置、以及通过创建地址池和部署服务来测试MetalLB的过程。
128 1
K8S的Service的LoadBanlance之Metallb解决方案
|
30天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
1月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
2月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
2月前
|
Kubernetes 网络虚拟化 Docker
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
文章提供了一个解决方案,用于在无法直接访问Google镜像仓库的情况下,通过使用阿里云镜像来下载kubeadm所需的Kubernetes镜像。
306 4
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
|
4月前
|
人工智能 运维 安全
阿里云容器服务ACK:高效管理云上应用的容器化解决方案
阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)为开发者提供了一套全面的容器化管理解决方案,旨在简化云上应用的部署、运维和管理。本文将深入探讨ACK的功能、优势及应用场景,为开发者展现容器化技术在云环境下的强大能力。
328 0
|
9天前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
36 1
|
1月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
124 17
|
1月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
603 1
下一篇
无影云桌面