阿里云容器计算服务ACS深度对接与实践指南
一、初识阿里云容器计算服务ACS
阿里云容器计算服务(Container Compute Service,简称ACS)是阿里云推出的新一代Serverless容器计算平台,以Kubernetes为使用界面提供弹性、免运维的容器算力资源。从产品演进来看,ACS是ACK Serverless集群(原ASK)的全面升级版本,在成本效益、易用性和弹性能力上均实现了显著提升。相比传统的ACK Pro集群,ACS完全免去了集群控制面的运维负担:您无需关心节点规格选择、节点创建和节点管理,只需要按需申请Pod资源,ACS会自动分配算力,并按秒级计费。
需要先登录阿里云控制台,点击:阿里云控制台
二、开通服务与授权前置
首次使用ACS时,需要完成服务开通和授权两个关键步骤。登录容器计算服务控制台,点击前往开通,按照页面提示完成产品开通。开通完成后,返回控制台并刷新页面,点击前往授权,为ACS授权访问其他云资源的权限。完成以上操作后,刷新控制台即可正常使用ACS服务。对于RAM用户,还需要确保已经授予了与ACS相关的系统策略,例如AliyunCSFullAccess,以便拥有完整的集群管理权限。
三、网络架构设计与集群创建
在创建ACS集群之前,网络规划至关重要。ACS集群的网络架构分为三个层次:VPC作为最外层的网络边界,定义了整体IP地址空间;vSwitch作为可用区级子网,Pod的IP地址从Pod专用vSwitch中分配;Service CIDR则是专门为Kubernetes Service预留的独立IP范围,仅在集群内部生效。规划时必须遵守三个核心约束:vSwitch的CIDR必须是VPC CIDR的子集;Service CIDR不能与任何vSwitch CIDR重叠;Service CIDR在集群创建后不可修改。
创建ACS集群时,可以选择自动创建VPC或使用已有VPC。配置SNAT选项决定了VPC内的实例能否访问公网,如果Pod需要从公网拉取容器镜像,则需要配置NAT网关。为了降低成本,更好的做法是将容器镜像上传到与ACS集群同一地域的阿里云容器镜像服务(ACR)中,然后通过内网VPC地址拉取镜像,这样可以避免产生公网流量费用。在可用区选择上,建议选择多个可用区以确保高可用,ACS会在每个选中的可用区下自动创建一个对应的虚拟节点。
以下是创建集群时网络配置的YAML格式示例,展示了通过OpenAPI调用时的参数配置:
{
"cluster_type": "ManagedKubernetes",
"profile": "Serverless",
"name": "my-acs-cluster",
"region_id": "cn-hangzhou",
"zone_ids": ["cn-hangzhou-g", "cn-hangzhou-h"],
"vpc_id": "vpc-xxxxxx",
"vswitch_ids": ["vsw-xxxxxx1", "vsw-xxxxxx2"],
"service_cidr": "172.19.0.0/20",
"snat_entry": true,
"security_group_id": "sg-xxxxxx"
}
对于跨地域或多集群场景,不同集群的Service CIDR可以重叠,但需要注意Pod IP无法直接访问另一个集群的Service,只有Pod之间的流量可以跨越集群边界。
四、ACS Pod计算类型与算力配置
ACS通过Pod上的alibabacloud.com/compute-class标签来指定实例的计算类型,当前支持通用型、性能型、GPU型和高性能网络GPU型四种计算类型。
通用型(general-purpose)是默认的计算类型,适用于绝大部分无状态微服务应用、Java Web应用以及各类计算类任务。性能型(performance)则面向需要更强性能的业务场景,如基于CPU的AI/ML训练和推理、HPC批处理等。GPU型(gpu)和GPU-HPN型(gpu-hpn)主要服务于AI/HPC等异构计算场景,其中GPU-HPN型额外支持RDMA高速网络,更适合分布式训练和分布式推理任务。CPU资源从0.25 vCPU起步,步长为0.5 vCPU;GPU资源从1卡起步。除了计算类型,ACS还定义了服务质量等级(QoS Class),包括默认QoS和BestEffort两类,后者以更低成本服务于Spark、Presto等可容忍延迟的离线批处理任务。
以下是通过Deployment YAML指定计算类型的完整示例,包含通用型、GPU型和GPU-HPN型三种场景:
# 通用型实例配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-general-purpose
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
alibabacloud.com/compute-class: general-purpose
spec:
containers:
- name: nginx
image: nginx:latest
resources:
requests:
cpu: "1"
memory: "2Gi"
limits:
cpu: "2"
memory: "4Gi"
# GPU型实例配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: gpu-inference
spec:
replicas: 1
selector:
matchLabels:
app: gpu-app
template:
metadata:
labels:
app: gpu-app
alibabacloud.com/compute-class: "gpu"
spec:
containers:
- name: pytorch-inference
image: pytorch/pytorch:latest
resources:
requests:
cpu: "4"
memory: "16Gi"
nvidia.com/gpu: "1"
limits:
cpu: "4"
memory: "16Gi"
nvidia.com/gpu: "1"
# 高性能网络GPU型(GPU-HPN)配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: distributed-training
spec:
replicas: 2
selector:
matchLabels:
app: train-app
template:
metadata:
labels:
app: train-app
alibabacloud.com/compute-class: "gpu-hpn"
spec:
containers:
- name: trainer
image: nvcr.io/nvidia/pytorch:latest
resources:
requests:
cpu: "8"
memory: "32Gi"
nvidia.com/gpu: "1"
limits:
cpu: "8"
memory: "32Gi"
nvidia.com/gpu: "1"
在AI场景中,ACS GPU提供了从数据预处理、模型训练到推理部署的全流程支持。数据预处理阶段可以调用海量CPU实例进行并行处理,按需启停、用完即释放。模型训练阶段支持按秒计费的GPU实例,尤其适合实验调优和迭代训练。推理部署阶段则具备从零到自动扩缩的能力,无流量时实例可缩减为零,完全不产生费用。
五、存储集成:基于CSI的多类型存储挂载
ACS的容器存储功能基于Kubernetes容器存储接口(CSI),融合了块存储、NAS、OSS等多种阿里云存储服务。存储挂载主要包含静态制备和动态制备两种方式,推荐优先使用动态制备以提高自动化程度。
以NAS存储为例,动态挂载需要先创建StorageClass定义存储的配置参数,然后创建PVC引用该StorageClass,系统会根据PVC声明自动创建PV。以下是NAS存储卷动态挂载的完整配置示例:
# 步骤一:创建StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nas-performance
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
volumeAs: filesystem
fileSystemType: standard
storageType: Performance
vpcId: "vpc-xxxxxx"
vSwitchId: "vsw-xxxxxx"
accessGroupName: DEFAULT_VPC_GROUP_NAME
deleteVolume: "false"
provisioner: nasplugin.csi.alibabacloud.com
# 步骤二:创建PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nas-data-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: nas-performance
resources:
requests:
storage: 100Gi
# 步骤三:在Pod中挂载PVC
apiVersion: v1
kind: Pod
metadata:
name: app-with-nas
spec:
containers:
- name: app
image: nginx:latest
volumeMounts:
- name: data-volume
mountPath: /data
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: nas-data-pvc
对于CPFS文件系统,静态挂载的PV定义中需要在csi区块指定driver为nasplugin.csi.alibabacloud.com,并通过volumeAttributes中的mountProtocol: cpfs-nfs字段以及server地址来指定挂载点。需要注意的是,CPFS支持ReadWriteMany访问模式,多个Pod可以并发读写同一个持久卷。在AI模型训练场景中,建议将CPFS挂载到任意CPU类型的ACS Pod或GPU加速型ACS Pod上,以便共享训练数据和模型权重。
OSS对象存储的挂载方式与NAS类似,需要配置ossplugin.csi.alibabacloud.com作为provisioner,并通过nodePublishSecretRef从Secret中获取AccessKey用于认证授权。在挂载大语言模型文件时,由于模型体积巨大,推荐创建NAS或OSS存储卷来持久化存储,避免每次部署时重复下载。
六、可观测性:监控与日志采集
ACS默认集成并开启Prometheus服务,基于预置的监控大盘和监控性能指标,从K8s集群、实例Pod、应用应用三个维度全面监控系统运行状态。ACS集群通过alicloud-monitor-controller组件与阿里云可观测服务(托管Prometheus、日志服务SLS、云监控)深度集成,自动同步可观测配置和告警规则的全生命周期。对于GPU加速型实例,还需要采集GPU-HPN节点的GPU相关监控指标,可以通过修改Prometheus配置来获取目标节点的Metrics数据。
日志方面,ACS集成日志服务SLS,支持应用日志、Pod实例日志、集群日志的自动采集及集中查看。在集群创建过程中,可以开启日志采集功能,系统会自动在SLS中创建相应的日志库,无需额外配置。对于自定义日志路径或结构化日志解析需求,可以通过配置Logtail采集配置来实现精细化日志管理。需要特别注意的是,阿里云云监控产品计划于2026年3月起逐步下线企业云监控中的Prometheus监控、本地日志监控和SLS日志监控三个功能模块,建议用户及时迁移到托管Prometheus和SLS原生的监控方案。
七、CI/CD流水线自动化部署
将代码变更自动部署到ACS集群,是云原生开发模式的核心环节。推荐采用"GitHub Actions + 阿里云ACR + kubectl"的技术栈来构建轻量级CI/CD流水线。整体流程如下:代码推送到GitHub仓库触发Actions工作流;工作流中登录阿里云容器镜像服务(ACR)并构建Docker镜像;将镜像推送到ACR仓库;最后通过kubectl命令更新ACS集群中的Deployment镜像版本。
完整的GitHub Actions配置文件示例:
name: Build and Deploy to ACS
on:
push:
branches: [ main ]
env:
REGION: cn-hangzhou
IMAGE_NAME: my-app
CLUSTER_NAME: my-acs-cluster
DEPLOYMENT_NAME: my-app-deployment
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure Alibaba Cloud credentials
uses: aliyun/aliyun-cli-action@v1
with:
access-key-id: ${{ secrets.ALIYUN_ACCESS_KEY_ID }}
access-key-secret: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}
- name: Login to ACR
uses: aliyun/acr-login@v1
with:
region-id: ${{ env.REGION }}
username: ${{ secrets.ACR_USERNAME }}
password: ${{ secrets.ACR_PASSWORD }}
- name: Build and push Docker image
run: |
IMAGE_TAG=$(date +%s)
docker build -t ${{ env.REGION }}.cr.aliyuncs.com/my-namespace/${{ env.IMAGE_NAME }}:$IMAGE_TAG .
docker push ${{ env.REGION }}.cr.aliyuncs.com/my-namespace/${{ env.IMAGE_NAME }}:$IMAGE_TAG
echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
- name: Update ACS deployment
uses: appleboy/kubectl-action@v0.0.1
with:
kube_config: ${{ secrets.KUBE_CONFIG }}
args: set image deployment/${{ env.DEPLOYMENT_NAME }} ${{ env.DEPLOYMENT_NAME }}=${{ env.REGION }}.cr.aliyuncs.com/my-namespace/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} -n default
- name: Rollout status check
uses: appleboy/kubectl-action@v0.0.1
with:
kube_config: ${{ secrets.KUBE_CONFIG }}
args: rollout status deployment/${{ env.DEPLOYMENT_NAME }} -n default
对于更复杂的企业级交付需求,可以引入GitOps模式,使用ACK One GitOps自动同步镜像仓库中的变更至Kubernetes集群。同时,也可以基于EventBridge事件总线实现事件驱动的CI Pipeline,当代码提交到Git仓库时触发Argo Workflows执行CI任务,构建镜像并推送至ACR。这种方式在可用性、安全性和扩展性方面具有显著优势,尤其适合大规模、多团队的协作交付场景。
八、总结与最佳实践建议
使用ACS时建议遵循以下最佳实践:网络规划阶段使用/16或更短的VPC掩码预留足够的扩展空间,Service CIDR建议使用非重叠的独立网段,多可用区部署保障高可用。算力选择上根据业务特性配置适当的计算类型标签,在线业务使用通用型或性能型,离线批处理任务使用BestEffort QoS降低成本。存储方面推荐使用动态制备模式,将敏感认证信息存放在Secret中,并定期轮转。可观测性配置至少包含CPU/内存使用率、Pod重启次数等核心告警规则,并启用SLS日志服务以便后续问题排查。在成本优化上,利用秒级计费和按需伸缩的特性,结合预留实例券或节省计划进一步降低长期运行的固定业务成本。
常见问答
问题一:ACS与ACK Serverless有什么区别?
答:ACS是ACK Serverless的全面升级版本,提供了更好的成本效益、易用性和弹性能力,同时定义了更丰富的计算类型和服务质量等级(QoS Class)。
问题二:如何在ACS中指定Pod的计算类型?
答:通过在Pod的metadata.labels中添加alibabacloud.com/compute-class标签,可设置为general-purpose、performance、gpu或gpu-hpn四种类型之一。
问题三:ACS支持哪些存储类型?
答:ACS基于CSI组件支持块存储、NAS文件存储、CPFS并行文件系统、OSS对象存储等多种阿里云存储服务,并兼容Kubernetes原生的EmptyDir和ConfigMap。
问题四:ACS集群如何实现公网访问?
答:创建集群时开启SNAT配置,系统会自动创建NAT网关并配置SNAT规则;也可以预先创建NAT网关并手动配置SNAT。若不配置公网,可将镜像上传到同地域ACR并通过内网VPC拉取。
问题五:ACS的监控日志功能是否需要额外配置?
答:ACS默认集成并开启Prometheus托管服务,并通过alicloud-monitor-controller组件自动同步告警规则。日志集成SLS,可在集群创建时选择开启日志采集,系统会自动完成配置。
问题六:如何降低ACS的使用成本?
答:利用秒级计费特性按需使用资源,离线任务选用BestEffort QoS,预留实例缓解写/节省计划降低长期业务成本,尽量使用同地域VPC内网拉取镜像以节省公网流量费用。

