阿里云分布式云容器平台ACK One对接使用完全指南
引言:ACK One是什么
在云原生技术席卷企业IT架构的今天,Kubernetes已成为容器编排的事实标准。然而,随着业务规模的扩张和部署环境的复杂化,单一Kubernetes集群往往难以满足企业的全部需求——容灾多活需要跨地域部署、大促弹性需要混合云资源、安全合规要求多环境隔离、单集群规模和性能存在上限。分布式云容器平台ACK One正是阿里云面向这些混合云、多集群、分布式计算和容灾场景推出的企业级解决方案。
ACK One并非一个简单的Kubernetes发行版,而是一个以多集群管理为核心、以应用交付为目标的综合性平台。它基于阿里云容器服务ACK的强大底座,将注册集群、舰队管理、GitOps、多集群服务与网关、分布式工作流Argo集群、备份中心六大产品能力有机整合。这些能力既可以独立使用,也可以组合集成,灵活满足不同场景的需求。
本文将从零开始,系统讲解ACK One的对接与使用方法。无论你是希望将本地数据中心的Kubernetes集群接入云端统一管理,还是需要构建跨地域、跨账号的多集群应用交付体系,亦或是想通过GitOps实现声明式的持续部署,这篇文章都将提供完整的操作指南与代码示例。
需要先登录阿里云控制台,点击:阿里云控制台
一、开通服务与准备工作
1.1 开通ACK One服务
使用ACK One的第一步是开通服务。登录阿里云控制台后,在容器服务ACK的产品页面中找到分布式云容器平台ACK One的入口,按指引完成开通。开通过程中,系统会提示授权默认服务角色——这是ACK One获取必要云资源操作权限的前提。服务角色策略涵盖了访问ECS、VPC、SLB等基础云产品的权限,请务必确认授权完成。
1.2 开通关联云产品
ACK One的诸多能力依赖其他阿里云产品:注册集群需要VPC和交换机资源;GitOps需要容器镜像服务ACR存放镜像;多集群网关依赖MSE或ALB;备份中心依赖对象存储OSS作为备份仓库。建议在正式开始使用前,根据实际需求提前开通相关产品并完成基础配置。
1.3 准备访问凭证
后续操作中,你将频繁使用kubectl和阿里云CLI与ACK One交互。请确保:
- 已安装并配置kubectl,能够访问目标Kubernetes集群
- 已安装最新版阿里云CLI并配置了AccessKey凭证
- 如果是RAM用户操作,确保已授予AliyunAdcpFullAccess等必要权限
安装并配置阿里云CLI的示例命令如下:
# 下载并安装阿里云CLI
curl -fsSL https://aliyuncli.alicdn.com/install.sh | bash
# 配置AccessKey
aliyun configure
# 按提示输入AccessKey ID、AccessKey Secret、默认地域和输出格式二、注册集群:将自建Kubernetes接入云端
2.1 注册集群概述
注册集群是ACK One最基础也最核心的能力之一。它帮助你将本地数据中心的自建Kubernetes集群、其他云厂商的Kubernetes集群,甚至边缘Kubernetes集群,接入阿里云容器服务管理平台进行统一管理。接入之后,你可以在阿里云控制台上查看集群状态、监控指标、审计日志,并享受云上弹性资源、安全管理和协同调度等扩展能力。
注册集群本身不收取集群管理费用——你仅需为使用的其他阿里云产品按各产品的计费规则付费。
2.2 创建注册集群
在ACK One控制台中创建注册集群的步骤如下:
- 登录容器服务管理控制台,在左侧导航栏选择"集群列表"
- 在集群列表页面,单击"创建集群"
- 在ACK One注册集群页签,配置相关参数
配置参数时,需要关注以下关键项:
- 集群名称:自定义一个易于识别的名称
- 地域:选择与您的业务最接近的地域
- 专有网络VPC:选择或创建VPC,确保与自建集群网络可达
- 虚拟交换机:选择VPC下的交换机
2.3 接入自建集群
创建注册集群后,需要将自建Kubernetes集群接入。具体操作是通过YAML将目标集群接入注册集群。接入过程中需要使用注册集群提供的导入命令和配置文件。
首先,在ACK One控制台获取注册集群的导入配置:
# 通过阿里云CLI获取注册集群的kubeconfig
aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_REGISTERED_CLUSTER_ID>然后在自建集群上执行导入操作。假设你已获得导入YAML文件,执行以下命令:
# 在自建Kubernetes集群上执行导入
kubectl apply -f agent.yaml
# 验证接入状态
kubectl get nodes
kubectl get pods -n ack-one接入成功后,你可以在ACK One控制台的集群列表中看到该集群,状态显示为"运行中"。
2.4 云上弹性扩展
注册集群的一个重要价值在于可以获得云上弹性计算资源。通过为注册集群安装ack-virtual-node组件,可以将阿里云弹性容器实例ECI接入自建集群:
# 在注册集群中安装ack-virtual-node组件
kubectl apply -f https://ack-one.aliyun.com/virtual-node.yaml
# 创建虚拟节点
kubectl apply -f virtual-node.yaml安装完成后,你可以在自建集群中创建Pod并调度到ECI上运行,应对业务突发流量。同时,注册集群也支持将阿里云ECS节点加入到本地K8s集群中。
此外,注册集群还支持通过节点池来高效管理集群节点,节点池是一组具有相同配置的节点集合,支持在单个集群中创建多个不同类型的节点池。
三、多集群舰队:统一管理控制面
3.1 舰队概述
当企业同时运行多个Kubernetes集群时,可以通过多集群舰队ACK One Fleet来统一管理。舰队是由ACK托管的控制面,可以管理任意环境的Kubernetes集群,为企业提供一致的云原生应用管理体验。
多集群舰队控制面基于K8s控制面构建,提供标准Kubernetes API。舰队可以接入多个K8s集群——非容器服务ACK集群可以先通过注册集群接入。
3.2 创建舰队并关联集群
在ACK One控制台中开启舰队管理功能,需要配置舰队所在的地域、专有网络VPC和虚拟交换机信息。创建舰队实例后,可以将同账号下的ACK集群或注册集群纳入舰队管理,成为关联集群。舰队可以跨地域管理关联集群。
关联集群的示例操作:
# 通过阿里云CLI将集群关联到舰队
aliyun adcp AttachClusterToHub \
--ClusterId <YOUR_FLEET_ID> \
--AttachedClusterId <YOUR_CLUSTER_ID>3.3 舰队核心能力
舰队提供以下核心能力:
- GitOps应用分发:托管开源Argo CD,实现GitOps多集群应用分发
- 流量管理:集成MSE云原生网关,实现多集群应用南北流量控制;支持多集群Service,实现多集群东西流量控制
- 作业分发:离线作业多集群调度,选择适合的集群运行离线作业
- 全局监控:多集群监控大盘,一个监控大盘查看所有集群的监控指标
通过舰队,开发人员可以获得一致性的Kubernetes API,由舰队完成工作负载、应用、配置信息的调度分发。
四、GitOps持续交付:声明式应用部署
4.1 GitOps概述
ACK One GitOps提供了面向多云、多集群、混合云的多集群应用GitOps持续交付能力。通过全托管开源的Argo CD项目,集成ACK One的多集群能力、阿里云的RAM SSO等能力,为您提供开箱即用的Argo CD能力。
GitOps的核心思想是使用Git仓库作为应用部署的唯一事实来源。在ACK One GitOps中建立应用与集群的关系后,仅需提交代码到Git仓库,即可完成业务应用的自动部署和同步到相应集群。
4.2 开启GitOps
在ACK One舰队中开启GitOps功能后,可以通过Git repository对应用编排、Helm编排等实现版本管理,同时支持应用一次编排的多集群持续发布。
开启GitOps的步骤:
- 在ACK One控制台进入舰队详情页面
- 在"组件管理"中启用GitOps组件
- 系统会自动部署Argo CD实例
4.3 创建GitOps应用
以下是通过Argo CD在ACK One中创建多集群应用的示例:
# 定义Application资源
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: guestbook
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
targetRevision: HEAD
path: guestbook
destination:
server: https://kubernetes.default.svc
namespace: guestbook
syncPolicy:
automated:
prune: true
selfHeal: true对于多集群场景,可以使用ApplicationSet资源来定义多个集群的部署目标:
# ApplicationSet示例 - 部署到多个关联集群
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook-multi
namespace: argocd
spec:
generators:
- clusters:
selector:
matchLabels:
environment: production
template:
metadata:
name: '{{name}}-guestbook'
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
targetRevision: HEAD
path: guestbook
destination:
server: '{{server}}'
namespace: guestbook
syncPolicy:
automated:
prune: true
selfHeal: true4.4 GitOps的优势
ACK One GitOps的核心优势包括:
- 开箱即用、免运维:全托管的Argo CD服务
- 简化多集群应用部署:支持控制台管理ApplicationSet、原生Argo CD UI体验、阿里云RAM SSO集成
- 高可用性:支持5000+应用的高可用Argo CD
- 多租权限管理:基于阿里云RAM的多租户权限管理
- 完整的可观测性:Argo CD的监控告警配置、日志采集与控制台查看
五、多集群服务与网络治理
5.1 多集群Service跨集群通信
ACK One多集群服务可实现原生Service的跨集群通信,适用于因业务隔离、异地容灾等需求部署多个集群的场景。相较于传统方案,多集群服务无需部署额外负载均衡实例,简化了多集群应用的部署操作和网络架构,同时降低了公网暴露的风险和相应的成本。
使用多集群服务需要满足以下网络前提条件:
- 多集群处于不同VPC时,确保VPC地址段不重叠,通过VPC对等连接或云企业网CEN实现VPC互联
- 多集群Pod地址段和Service地址段不重叠
- 集群间节点池安全组相互允许访问Pod地址段
5.2 MultiClusterService配置
ACK One提供了两种多集群服务实现方案:
- MultiClusterService(推荐):配置方法简单,无需修改业务代码和DNS配置,使用原生Service域名访问
- ServiceImport/ServiceExport:符合社区API规范,使用专用域名进行访问,需修改DNS配置
MultiClusterService的配置示例:
apiVersion: networking.one.alibabacloud.com/v1alpha1
kind: MultiClusterService
metadata:
name: my-service
namespace: default
spec:
providerClusters:
- cluster1
consumerClusters:
- cluster2
serviceName: my-service
serviceNamespace: default配置完成后,Consumer Cluster中的Pod可以通过 service.<namespace> 域名直接访问Provider Cluster中的Pod。
5.3 多集群网关南北向流量管理
ACK One多集群网关基于MSE Ingress提供了强大的多集群南北向流量管理能力。它可以快速帮助用户实现同城应用多活容灾、流量多集群负载均衡、基于Header路由流量到指定集群等能力。
多集群网关使用Ingress API进行管理,极大地降低了使用门槛。创建多集群网关的YAML示例:
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: ackone-gateway
# 添加关联集群到MSE网关
annotations:
mse.alibabacloud.com/remote-clusters: "cluster1,cluster2"
spec:
# 网关实例配置
gateway:
replicas: 2
spec:
# 网关规格配置通过ALB多集群网关,结合ACK One GitOps或多集群应用分发,可以快速实现应用的同城多活容灾。在故障发生时,流量可以自动平滑迁移。
六、备份中心:应用与数据保护
6.1 备份中心概述
ACK One备份中心提供应用和数据保护,支持跨地域完整应用和数据一体迁移,以及应用多活部署的快速实施。备份中心可以备份和恢复ACK集群内以及同区域或跨区域ACK集群中的应用和数据。
将其他云厂商的Kubernetes集群接入到ACK One注册集群后,可以通过备份中心对原集群中部署的应用及数据进行备份,并在ACK集群中完成恢复,实现应用跨云的快速迁移。
6.2 使用备份中心
备份中心的使用流程:
- 创建备份仓库(依赖OSS存储)
- 在源集群中创建备份任务
- 在目标集群中执行恢复操作
备份中心解决了跨存储插件、跨版本集群间应用迁移的一些问题,例如需要备份未被应用使用到的Cluster级别资源、API Version自动切换至恢复集群支持的版本等。
七、分布式工作流Argo集群
7.1 工作流集群概述
ACK One的分布式工作流Argo集群是一款完全遵循社区规范的全托管式Argo Workflows服务。它致力于处理大规模计算密集型作业,通过整合阿里云ECI实现自动扩容、按需扩容以及弹性伸缩,并支持使用抢占式ECI实例以大幅降低使用成本。
工作流集群采用无服务器模式,使用阿里云弹性容器实例ECI运行工作流。通过优化Kubernetes集群参数,同时配合抢占式ECI实例,实现大规模工作流的高效弹性调度及成本优化。
7.2 创建工作流
使用工作流集群前,需要从ACK One控制台获取分布式工作流Argo实例的KubeConfig,并通过kubectl连接至工作流集群。
以下是一个简单的Argo Workflow示例:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
entrypoint: whalesay
templates:
- name: whalesay
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["hello from ACK One Argo"]工作流集群支持动态DAG方式编排Fan-out/Fan-in任务,可按需调度云上算力,利用云上弹性可调用数万核CPU资源。
八、多集群作业分发与AI调度
ACK One多集群作业分发是面向多集群和混合云场景提供的多集群AI作业调度和分发能力。当单一ACK集群无法满足大规模AI训练和推理任务的资源需求,或当前已有的多个ACK集群有较多资源闲置时,可以利用该能力将任务调度到多个集群。
多集群作业分发支持多种作业类型,兼容PyTorchJob、SparkApplication和TFJob等框架。ACK One舰队支持基于集群实际剩余资源的多集群Spark作业调度和分发。
舰队还引入了FederatedHPA资源对象,将原生的单集群HPA无缝扩展到多集群。同时,通过多集群HPA中心化能力,实现了跨多集群的AI推理服务灰度发布。
九、权限管理与安全
9.1 权限体系概述
ACK One的权限体系分为三个层次:服务角色、RAM权限策略和RBAC权限。您需要为服务账号授予对应的权限,才能正常使用ACK One的功能。
- 服务角色:ACK One获取云资源操作权限的前提
- RAM权限策略:控制对ACK One服务本身的访问权限,但不控制集群内Kubernetes资源的访问
- RBAC权限:控制对指定集群及其命名空间内Kubernetes资源的操作权限
9.2 授予RAM权限
若通过RAM用户或RAM角色使用ACK One,需要授予其操作权限(例如创建舰队集群、关联集群、创建工作流集群等)。ACK One提供默认系统权限策略,用于指定全局资源的读写访问控制。
授予RAM权限的示例:
# 通过阿里云CLI为RAM用户授予AliyunAdcpFullAccess策略
aliyun ram AttachPolicyToUser \
--PolicyType System \
--PolicyName AliyunAdcpFullAccess \
--UserName <RAM_USER_NAME>9.3 授予RBAC权限
RAM系统策略仅控制ACK One集群资源的操作权限(例如创建实例、查看实例列表等)。若RAM用户或RAM角色需要操作指定集群内的K8s资源(例如创建GitOps Application和Argo Workflow等),还需要获取指定ACK One集群及其命名空间的操作权限,即RBAC权限。
RBAC权限的授予通常在ACK One控制台或通过kubectl完成:
# 创建RBAC角色绑定示例
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: developer-binding
subjects:
- kind: User
name: <RAM_USER_ID>
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: admin
apiGroup: rbac.authorization.k8s.io十、可观测性与监控
ACK One提供了完整的可观测性体系。注册集群支持事件中心、Ingress图表、日志采集、ARMS应用监控、ARMS Prometheus、Node Problem Detector、Metrics Adapter等能力。安全管理方面,支持RAM统一身份认证和RBAC权限管理、基于日志服务的集群审计和配置巡检功能。
ACK One支持收集Fleet实例控制平面组件和审计日志,将日志从ACK One Fleet实例控制面采集到您账号的SLS日志服务的Log Project中。多集群全局监控基于单集群Prometheus的监控指标,聚合汇总多个集群的监控指标。
开启Fleet实例日志采集的示例:
# 通过阿里云CLI开启Fleet实例的日志采集
aliyun adcp UpdateHubClusterFeature \
--ClusterId <YOUR_FLEET_ID> \
--EnableLogCollect true \
--LogProject <YOUR_SLS_PROJECT>十一、计费说明
ACK One的计费分为两类:ACK One平台费用(目前免费)和底层阿里云产品资源费用。以下ACK One功能目前免费:多集群舰队、备份中心、注册集群管理、分布式工作流Argo集群。
但如果使用了其他阿里云产品资源,需按各产品的计费规则付费。例如,使用备份中心时依赖OSS存储备份功能,需要支付OSS相关费用;使用多集群网关会产生MSE或ALB的费用;使用ECS实例或ECI实例运行工作负载需要支付相应的计算资源费用。
十二、总结与实践建议
ACK One作为阿里云面向混合云、多集群、分布式计算和容灾场景的企业级分布式云容器平台,通过注册集群、舰队管理、GitOps、多集群服务与网关、分布式工作流Argo集群、备份中心六大核心能力,为企业提供了从集群统一纳管到应用持续交付的全链路解决方案。
在实际使用中,建议按照以下路径逐步推进:
- 第一步:开通ACK One服务并完成授权
- 第二步:通过注册集群将现有Kubernetes集群接入云端
- 第三步:创建舰队实例并关联需要统一管理的集群
- 第四步:根据需求启用GitOps、多集群服务、备份中心等能力
- 第五步:配置相应的权限管理和监控告警体系
ACK One的各产品能力既可以单独使用,也可以组合集成,可根据实际需求灵活选用。通过合理规划和逐步实施,企业可以在混合云和多集群场景下实现统一管理、弹性扩展和持续交付的目标。
常见问题解答
问1:ACK One注册集群是否收取管理费用?
答:注册集群本身不收取集群管理费用,您仅需为使用的其他阿里云产品(如ECS、VPC、SLS等)按各产品的计费规则付费。
问2:自建Kubernetes集群接入ACK One需要满足什么网络条件?
答:自建集群需要与阿里云VPC网络可达。如果通过公网接入,可能会遇到超时等不稳定问题。建议通过专线或VPN建立稳定的网络连接。
问3:ACK One GitOps和普通Argo CD有什么区别?
答:ACK One GitOps是基于开源Argo CD的全托管服务,深度集成了ACK One的多集群管理能力和阿里云RAM SSO能力,提供了开箱即用的多集群GitOps持续交付体验。
问4:多集群Service实现跨集群通信需要额外部署负载均衡吗?
答:不需要。ACK One多集群Service可直接实现原生Service的跨集群通信,无需部署额外负载均衡实例,简化了网络架构并降低了成本。
问5:备份中心支持跨地域备份恢复吗?
答:支持。备份中心可以备份和恢复同区域内的ACK集群,也支持跨区域ACK集群的备份和恢复。
问6:使用ACK One进行多集群管理需要额外购买什么许可证吗?
答:ACK One的多集群舰队和备份中心相关功能目前免费。您只需要为使用的底层阿里云产品资源(如ECS、ECI、OSS、MSE等)按量付费。



