阿里云容器计算服务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内网拉取镜像以节省公网流量费用。

相关推荐
tiancaijiben2 小时前
云非编系统:阿里云智能媒体生产的云端渲染加速与协同编辑工作流
云计算
weixin_307779134 小时前
在 Azure 上构建数据库路由与异构整合层:原理、方案与最佳实践
数据库·人工智能·后端·云计算·azure
夏影孤灯14 小时前
五、存储测试工具 vdbench
云计算
AOwhisky18 小时前
Redis 学习笔记(第一期):概述、安装配置与核心理论
运维·数据库·redis·笔记·学习·云计算
ZStack开发者社区19 小时前
ZSTACK · 答客问 | 什么时候该升级,什么时候再等等
网络·云计算
2601_9618752420 小时前
法考资料全套2026|客观题|主观题|资料已整理
阿里云·云计算·腾讯云·azure·七牛云存储·csdn开发云·火山引擎
SaaS_Product1 天前
同步盘操作教程:如何自动同步文件
人工智能·云计算·saas·onedrive
精益数智小屋1 天前
拆解项目管理计划的核心功能:用项目管理计划解决跨部门协作难题
大数据·人工智能·数据分析·云计算·软件工程
容器魔方1 天前
Karmada v1.18 版本发布!新增混合云溢出式调度能力
人工智能·云原生·容器·华为云·云计算