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(aliyun CLI)与ACK One交互。请确保:
- 已安装并配置kubectl,能够访问目标Kubernetes集群
- 已安装最新版阿里云CLI并配置了AccessKey凭证
- 如果是RAM用户操作,确保已授予AliyunAdcpFullAccess等必要权限
二、注册集群:将自建Kubernetes接入云端
2.1 注册集群概述
注册集群是ACK One最基础也最核心的能力之一。它帮助你将本地数据中心的自建Kubernetes集群、其他云厂商的Kubernetes集群,甚至边缘Kubernetes集群,接入阿里云容器服务管理平台进行统一管理。接入之后,你可以在阿里云控制台上查看集群状态、监控指标、审计日志,并享受云上弹性资源、安全管理和协同调度等扩展能力。
注册集群本身不收取集群管理费用——你仅需为使用的其他阿里云产品(如ECS、VPC、SLS等)按各产品的计费规则付费。
2.2 创建注册集群
通过控制台创建注册集群的步骤如下:
- 登录容器服务管理控制台,在左侧导航栏选择"集群列表"
- 在页面左上角选择目标资源组和地域
- 单击"创建集群",切换到"ACK One 注册集群"页签
- 配置集群参数:
- 集群名称:自定义,便于识别
- 地域:选择与用户或业务资源距离最近的地域以降低延迟
- 专有网络VPC:建议使用标准私有地址段(如10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)。为保障高可用,推荐选择2个及以上不同可用区的交换机
- 安全组:可使用已有安全组或自动创建。企业级安全组支持更多私网IP但默认不支持组内互通
- 单击"创建集群",等待集群创建完成
集群创建完成后,你可以在集群列表页面看到新创建的注册集群。
2.3 接入目标集群
注册集群创建完成后,需要将实际的Kubernetes集群接入进来:
- 在集群列表中找到刚创建的注册集群,单击操作列下的"详情"
- 在集群信息页面单击"连接信息"页签
- 根据网络环境选择公网或私网接入方式,获取接入命令
接入命令本质上是一个kubectl apply的YAML配置,其中包含了注册集群所需的Agent部署信息。在目标Kubernetes集群上执行该命令后,Agent将自动部署并建立与ACK One控制面的连接。
网络连通性注意事项:自建集群与阿里云之间的网络稳定性至关重要。如果通过公网接入,可能出现超时等不稳定问题;生产环境建议通过专线或VPN建立稳定的网络连接。
2.4 验证接入状态
接入完成后,返回ACK One控制台的集群列表,查看注册集群的状态是否变为"运行中"。你也可以通过kubectl直接操作注册集群:
# 获取注册集群的kubeconfig(在控制台连接信息页签下载)
# 使用kubectl验证连接
kubectl --kubeconfig=registered-cluster.kubeconfig get nodes
如果能够正常返回节点列表,说明注册集群已成功接入。
三、舰队管理:多集群的统一控制面
3.1 舰队管理概述
如果说注册集群解决了"接入"的问题,那么舰队管理解决的就是"管理"的问题。ACK One舰队是基于开源社区Open Cluster Management(OCM)构建的统一多集群管理解决方案。舰队实例由ACK托管,你无需关心控制面的运维工作,可以专注于业务开发。
一个舰队实例可以作为统一入口,管理任意环境的Kubernetes集群——无论是云上的ACK集群、ACK Edge集群,还是通过注册集群接入的自建集群。通过舰队,你可以实现:
- GitOps应用分发:基于ArgoCD的多集群应用持续部署
- 多集群网关:统一管理南北向流量,实现跨可用区高可用
- 多集群服务:Kubernetes原生Service的跨集群访问
- 全局监控:Prometheus全局聚合视图
- 统一权限管理:RAM用户或角色在多集群中的RBAC权限统一管控
- 多集群作业调度:支持Spark、TensorFlow等AI作业的多集群分发
3.2 开启舰队管理功能
开启舰队管理功能需要配置舰队所在地域、VPC和虚拟交换机信息。操作步骤如下:
- 登录ACK One控制台,在左侧导航栏选择"舰队管理"
- 单击"开启舰队管理",配置舰队参数:
- 地域:可根据关联集群的数量和分布就近选择。例如,Region A有2个关联集群、Region B有1个,则优先选择Region A
- VPC:优先选择关联集群数量最多的VPC,这样舰队与集群之间可以自动采用内网连接
- 虚拟交换机:无特殊要求,根据网络规划选择即可
- 单击"确定",等待舰队实例创建完成
重要提示:一个关联集群仅可纳入一个舰队进行管理。如果需要管理多个业务线或环境,可以创建多个舰队实例。
3.3 添加关联集群
舰队创建完成后,需要将目标集群添加为关联集群:
- 在ACK One控制台的舰队管理页面,进入目标舰队
- 单击"关联集群"页签,选择"添加关联集群"
- 在弹出的面板中,勾选需要关联的集群(可以是同账号下的ACK集群,也可以是已创建的注册集群)
- 单击"确定",等待约5分钟,状态变为"已关联"即表示成功
关联完成后,你可以通过舰队的kubeconfig统一访问所有关联集群。在舰队关联的CloudShell中,系统会自动加载舰队的KubeConfig,你可以直接通过kubectl管理所有关联集群。
# 获取舰队的kubeconfig(在控制台舰队详情页下载)
# 通过舰队kubeconfig查看所有关联集群的资源
kubectl --kubeconfig=fleet.kubeconfig get nodes --context=cluster-1
kubectl --kubeconfig=fleet.kubeconfig get nodes --context=cluster-2
3.4 舰队网络规划要点
舰队与关联集群之间的网络连通是管理生效的前提。网络架构上需要满足:
- 舰队所在VPC可以访问关联集群的API Server端点
- 关联集群所在VPC可以访问舰队的API Server端点
- 如果舰队与关联集群属于不同VPC,需要使用云企业网CEN将两个VPC网络打通;或者开启公网端点,通过公网互联
- 安全组需要允许来自对方网段的连接
在多集群服务场景下,还需要确保集群间的Pod网络互通——Pod CIDR和Service CIDR不能重叠。
四、GitOps:声明式的多集群应用交付
4.1 GitOps与ACK One GitOps
GitOps是一种以Git仓库为单一真实来源的持续交付理念。它强调用声明式的方式描述应用期望状态,并通过自动化控制器持续调整集群的实际状态,使其与Git仓库中的声明保持一致。
ACK One舰队托管了CNCF毕业项目ArgoCD,实现了开箱即用的GitOps能力。与传统自建ArgoCD相比,ACK One GitOps提供了以下独特优势:
- 免运维:托管的ArgoCD控制器,无需关心底层运维
- 原生体验:提供原生的ArgoCD CLI和UI界面
- RAM集成:支持阿里云RAM账号SSO登录和多租权限设置
- 多集群分发:关联集群自动加入ArgoCD,成为应用分发的目标集群
- 可观测性:内置监控告警和日志采集能力
- Codeup支持:支持阿里云Codeup代码仓库及WebHook配置
4.2 开启GitOps并登录ArgoCD
在ACK One控制台的舰队管理页面,找到目标舰队,在"多集群GitOps"卡片中单击开启。开启后,系统将自动部署ArgoCD相关组件。
获取ArgoCD控制台访问地址:在舰队详情页的"多集群GitOps"区域,可以找到ArgoCD Server的域名。首次访问时,使用阿里云账号或RAM子账号通过"LOGIN VIA ALIYUN"方式登录。
4.3 添加Git仓库
登录ArgoCD控制台后,首先需要添加应用部署模板所在的Git仓库:
- 在ArgoCD控制台左侧导航栏选择"Settings" > "Repositories"
- 单击"+ CONNECT REPO"
- 配置仓库信息(URL、认证方式等),单击"CONNECT"
- 连接状态显示为"Successful"即表示添加成功
4.4 创建并部署Application
通过ArgoCD Application将Git仓库中的应用部署到目标集群:
- 在ArgoCD控制台的"Applications"页面,单击"+ NEW APP"
- 配置Application参数:
- Application Name:应用名称
- Project:默认使用default
- Sync Policy:可选择手动或自动同步
- Repository URL:选择已添加的Git仓库
- Revision:分支或标签,如main
- Path:仓库中Chart或Manifest的路径
- Destination Cluster:选择目标关联集群
- Namespace:部署的目标命名空间
- 单击"CREATE"创建Application
- 在Application列表页面,单击应用下方的"SYNC",将应用同步部署至目标集群
- 同步完成后,状态显示为"Healthy"和"Synced"表示部署成功
除了控制台操作,你也可以通过ArgoCD CLI完成同样的工作:
# 安装ArgoCD CLI后,登录ArgoCD服务器
argocd login <argo-cd-server-domain> --sso
# 创建Application
argocd app create my-app \
--repo https://github.com/your-repo/app-deploy.git \
--path manifests \
--dest-server https://kubernetes.default.svc \
--dest-namespace default \
--sync-policy auto
# 同步Application
argocd app sync my-app
4.5 CI/CD流水线集成最佳实践
ACK One GitOps与容器镜像服务ACR深度集成,可以构建完整的CI/CD流水线:
- 开发团队将代码推送到Git仓库,触发ACR EE构建镜像
- 新版本镜像推送到ACR EE镜像仓库
- ACK One GitOps检测到镜像仓库的变更
- 自动将新镜像版本号回写到应用部署代码仓库
- ACK One GitOps检测到部署仓库变化后,触发Application同步
这种模式实现了"代码提交即部署"的自动化体验。不同环境可以配置不同的同步策略——开发环境自动同步最新镜像,预发和生产环境则采用手动同步配合Rollout灰度发布。
五、多集群服务与网关:跨集群的网络与流量治理
5.1 多集群服务(Multi-Cluster Services)
多集群服务是ACK One提供的跨集群Service访问能力,可实现原生Kubernetes Service的跨集群通信。与传统方案相比,多集群服务无需部署额外的负载均衡实例,简化了网络架构,降低了公网暴露风险。
ACK One提供了两种多集群服务实现方案:
- MultiClusterService(推荐):配置简单,无需修改业务代码和DNS配置,使用原生Service域名访问
- ServiceImport/ServiceExport:符合社区多集群服务API规范,但需要修改CoreDNS配置
使用MultiClusterService的配置示例:
apiVersion: networking.one.alibabacloud.com/v1alpha1
kind: MultiClusterService
metadata:
name: my-service
namespace: demo
spec:
consumerClusters:
- name: <consumer-cluster-id>
providerClusters:
- name: <provider-cluster-id>
MultiClusterService的名称和命名空间必须与Provider集群中待暴露的Service完全一致。配置完成后,Consumer集群中的Pod可以通过 my-service.demo 域名直接访问Provider集群中的服务。
前提条件:集群间Pod网络必须互通。如果集群位于不同VPC,需确保VPC地址段不重叠,并通过CEN或VPC对等连接实现互联。
5.2 多集群网关
多集群网关是ACK One面向南北向流量管理的解决方案。它基于MSE Ingress或ALB Ingress Controller,提供:
- 多集群应用的统一流量入口
- 同城应用多活容灾
- 流量多集群负载均衡
- 基于Header等条件的流量路由
配置多集群网关的基本流程:
- 在ACK One Fleet实例中创建AlbConfig或MseIngressConfig网关配置
- 通过Ingress Controller创建出ALB或MSE多集群网关
- 将需要处理流量的集群添加到网关
- 在Fleet中创建Ingress资源,定义路由规则
- 多集群网关根据规则将流量路由到多个集群
在容灾场景中,可以在两个地域各创建一个ACK集群,在地域1创建舰队和ALB多集群网关,在地域2安装ALB Ingress Controller作为冷备,实现异地容灾。
六、备份中心与分布式工作流
6.1 备份中心:跨集群应用迁移与恢复
备份中心是ACK One提供的应用级备份与迁移能力。它可以将注册集群中部署的应用及数据进行备份,并在目标ACK集群中恢复,实现线下到线上的快速迁移。
使用备份中心的基本流程:
- 在目标ACK集群中部署备份中心组件
- 初始化备份仓库(通常使用OSS存储)
- 从源集群(如ACK One注册集群)创建备份
- 等待备份记录同步后,在目标集群执行恢复操作
备份中心当前功能免费,仅需承担备份仓库(OSS)的存储费用。
6.2 分布式工作流Argo集群
ACK One分布式工作流Argo集群全托管Argo Workflows,适用于批处理、CI/CD Pipeline、大数据ETL等场景。它支持动态DAG方式编排Fan-out/Fan-in任务,可弹性调度云上算力,支撑数万核CPU资源的并行任务运行,任务结束后及时回收资源以节省成本。
开启方式:在ACK One控制台的集群信息页面,找到"工作流控制台(Argo)"卡片,开启公网访问并将本地IP加入白名单即可。
七、安全与权限管理
7.1 RAM与RBAC统一权限
ACK One支持通过RAM统一管理用户对多集群的访问权限。你可以:
- 为不同RAM用户或角色授予不同集群的RBAC权限
- 通过舰队的统一入口实现权限的集中管控
- 结合RAM的细粒度策略控制API访问
7.2 注册集群的安全能力
注册集群接入后,可以享受ACK提供的全方位安全能力:
- RAM统一身份认证和RBAC权限管理
- 基于日志服务SLS的集群审计
- 配置巡检功能,发现潜在安全风险
- 云安全中心集成,提供容器安全防护
八、计费说明
ACK One的计费模式较为灵活:
- 注册集群:不收取集群管理费用
- 多集群舰队:当前免费
- 分布式工作流Argo集群:不收取集群管理费用
- 备份中心:当前免费
需要注意的是,虽然ACK One本身的管理费用较低,但使用过程中涉及的关联云产品(如ECS、VPC、SLB、OSS、ACR、MSE等)仍按各自产品的计费规则收费。建议在规划阶段评估相关资源的用量和成本。
总结与展望
ACK One作为阿里云在分布式云容器领域的重要布局,将注册集群、舰队管理、GitOps、多集群服务、分布式工作流和备份中心六大能力融为一体,为企业提供了一站式的混合云与多集群管理方案。从本地数据中心的自建集群接入,到跨地域多集群的统一应用分发,再到声明式的GitOps持续交付,ACK One在降低运维复杂度的同时,显著提升了云原生应用的交付效率与可靠性。
随着云原生技术的持续演进,多集群、混合云将成为越来越多企业的标配架构。掌握ACK One的对接与使用,不仅能够解决当下的容器管理痛点,更为未来的云原生架构演进奠定了坚实基础。



