容器服务 ACK

Alibaba Cloud Container Service for Kubernetes

把程序装进一个个标准盒子,让专门的管理系统自动安排它们在哪台机器上跑、坏了自动重启。

计算与运行时出现时间 · 2015 年前后托管集群收取控制面管理费用,节点按实际使用的云服务器资源计费。容器Kubernetes编排微服务
看官方文档

01 它是干嘛的

ACK 是阿里云托管的 Kubernetes 服务。Kubernetes 是管理容器集群的标准工具,负责调度、扩缩容、自愈与网络。ACK 把控制面托管起来,用户不必自己搭建和运维这套复杂系统,只需提交应用,剩下的调度与运维交给平台。

02 为什么会有它

服务器上装软件,为什么越装越乱

传统部署方式是把程序直接装在服务器上:装依赖、配环境、改配置。问题是每台机器都变得「独一无二」,谁也不敢轻易动。换一台机器部署,往往因为系统版本或依赖不一致而失败,开发者常抱怨「在我电脑上是好的」。

容器解决了这个问题:把程序和它需要的一切(依赖、配置)打包成一个标准盒子,这个盒子在任何机器上都以完全相同的方式运行。但随之而来一个新问题——盒子多了,谁来决定哪个盒子跑在哪台机器上?机器坏了盒子怎么办?流量涨了怎么多开几个盒子?

这就是「编排」要解决的问题。Kubernetes 是目前的事实标准:它像一个大调度中心,你只描述「我要这个盒子跑三份」,剩下的交给它——它挑机器、看健康、坏了重启、忙了扩容。但它本身安装维护复杂,ACK 的作用就是把这一层难活接过去,让你专注在应用本身。

03 它怎么工作

流程是「描述期望、调度、运行、自愈」:你提交一份声明式配置,说明想要几个副本,Kubernetes 持续对比「期望状态」与「实际状态」,并不断行动让两者一致。

容器编排:你只说「要什么」,系统负责做到① 提交:我要 3 个副本② 选节点③ 少了就补一个开发者声明期望状态(yaml)调度器挑一台合适的机器控制面 API期望状态存这里工作节点 A实际跑容器工作节点 B实际跑容器Pod你的容器实例Pod挂了就自动重建你描述「最终应该是什么样」,系统不断对比现状并自动纠正差值(调谐循环)。期望状态的持有者实际被创建的东西
注意「期望状态」和「实际状态」之间的那根回路:Kubernetes 的核心就是不停地让实际向期望靠拢,所以它被称为声明式而非命令式。

一个应用是怎么被自动安排到集群上运行的

  1. 1
    ① 打包成容器镜像

    把程序和依赖打成镜像并推送到镜像仓库,相当于做好了标准盒子。

  2. 2
    ② 提交期望配置

    你写一份配置,声明「这个应用要跑 3 个副本、需要 1 核 2G 内存、暴露 80 端口」。

  3. 3
    ③ 调度器分配机器

    集群的调度器找到有足够资源的机器,把容器安排上去,并尽量把副本分散到不同机器,防止一起挂掉。

  4. 4
    ④ 持续检查与自愈

    系统定期探活,发现某个副本挂了就自动在新位置拉起一个,始终维持 3 个副本。

  5. 5
    ⑤ 弹性扩缩容

    负载升高时按规则自动增加副本、闲时自动减少;滚动更新时逐个替换旧版本,做到不停机发布。

04 谁在用它

微服务架构

把系统拆成多个小服务,各自打包成容器,由集群统一调度与扩缩容。

应对流量波动的业务

大促期间自动扩容、结束后自动缩容,资源随业务起伏,不必长期养着一堆空闲机器。

标准化多环境部署

开发、测试、生产用同一套镜像与配置模板,减少「环境不一致」导致的问题。

混合云与多云

Kubernetes 是跨云通用标准,ACK 支持把自建机房与云上集群统一纳管。

GPU 与批量任务调度

在集群里统一管理 GPU 资源,跑 AI 训练或定时批处理任务。

05 怎么用

门槛中等:需要理解容器与 Kubernetes 的基本概念,但无需自己搭建控制面。

  1. 01开通 ACK 集群,选择托管模式,指定节点规格与数量。
  2. 02准备容器镜像并推送到镜像仓库,配置好拉取凭证。
  3. 03编写 Deployment 与 Service 配置,声明副本数、资源与端口。
  4. 04用 kubectl 或控制台提交配置,观察容器实例是否正常启动。
  5. 05配置探活、滚动更新与弹性伸缩策略,接入监控与日志。
一个声明式部署配置(Deployment)yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-demo
spec:
  replicas: 3                 # 期望运行 3 个副本
  selector:
    matchLabels: { app: web-demo }
  template:
    metadata:
      labels: { app: web-demo }
    spec:
      containers:
        - name: web
          image: registry.cn-hangzhou.aliyuncs.com/demo/web:1.0
          ports:
            - containerPort: 80
          resources:
            requests: { cpu: "500m", memory: "512Mi" }

避坑提示

  • !为容器设置资源请求与上限,否则某个应用可能吃光节点资源,拖垮同机器上的其他应用。
  • !探活配置要符合真实业务,探得太严会导致正常启动的实例被反复杀掉。
  • !镜像版本不要用 latest 这类浮动标签,用固定版本号,才能保证每次发布跑的是同一个东西。

06 关键概念

容器
把程序和依赖打包成的标准盒子,在任何机器上都以相同方式运行。
Kubernetes(K8s)
管理容器集群的事实标准,负责调度、扩缩容与自愈。
声明式
你只说「想要什么结果」,系统持续实现它,而不是一步步下达操作命令。
Pod
Kubernetes 调度的最小单位,通常包含一个容器,是「副本」的实际载体。

07 容易混淆的对比

自建 Kubernetes掌控力最强、无托管费用,但要自己维护控制面升级与高可用,运维负担重。
Serverless 容器(如 ECI)连节点都不用管,按实际使用计费,更适合突发性强、不想运维节点的场景。
图软件图鉴

纯静态站点,无后端、无追踪。内容为中文原创撰写,用于帮助非技术读者理解主流软件产品。

关于本站

全部内容在构建时生成
产品名称与商标归各自公司所有

© 2026 软件图鉴Nuxt 4 · Vue 3 · Tailwind 4 · 纯静态