作者:懿川
容器计算服务 ACS 自从在云栖大会发布并开启邀测后,引起了开发者和企业客户的广泛关注,并收到了大量的产品试用申请。本文整理自容器计算服务 ACS 首席架构师懿川的分享,包含了产品的诞生背景、核心特性、关键技术和典型应用场景,帮助大家更加全面、更加立体的了解 ACS,旨在还原 ACS 帮助客户更好的去利用云所带来的技术红利的产品设计初衷。
产品诞生背景
容器化上云已成为新的常态,Kubernetes 随之成为用云的新界面。
根据 Dynatrace 今年发布的调研报告,托管在云中的 Kubernetes 集群数量正在以 127% 的年增速在增长,速度大约是本地托管集群的 5 倍。不久的将来,部署在云上的 K8s 集群数量将超过本地部署。同时,云上 73% 的 K8s 集群使用的是云厂商提供的托管发行版本。
此外,随着越来越多的应用架构微服务化,服务治理的复杂度在不断上升,当微服务遇到 K8s,带来了更多的复杂度。例如,K8s 配置复杂,计算资源机型多、代际多,集群和节点组件管理复杂,业务高峰实现按需弹性难度大等。
因此,为了降低 K8s 的使用和运维复杂度,解决资源和容器割裂的问题,我们设计了容器计算服务 ACS(Alibaba Cloud Container Compute Service,以下简称 ACS)。ACS 以 K8s 为使用界面,提供符合容器规范的算力资源,采用 Serverless 形态的算力交付模式,客户无需关注底层节点和集群的运维管理。
ACS 依托于阿里云神龙架构,实现了容器和资源的一体化,提供按需弹性和资源预留两种资源使用方式,支持秒级按量付费,提供通用型、任务型和独享型实例,适配不同类型的业务负载,算力同时支持客户基于容器自建的应用负载和云产品负载。我们希望借助这个新的容器产品,帮助客户更好的利用云所带来的技术红利。
此外,ACS 是基于 ECS 的弹性资源池来提供资源供给,并基于 K8s API,无缝集成了阿里云的产品体系,通过提供一个多负载、差异化 SLO 增强的大规模调度系统,来保证核心的调度能力,以及提供了多租安全隔离能力、管控侧传输全链路 TLS 加密,保障安全合规。
ACS 的核心特性
容器计算服务 ACS 具备 4 大核心特性,首先我们先来看一段操作视频【本视频请至微信公众号:阿里云云原生 观看】,直观的了解产品的核心能力。
- 极简易用,快速上手
ACS 实现了容器和资源的一体化,客户无需关注底层的节点和集群。产品设计极简,应用配置更加简单,易用性提升了大约 50%,降低了客户在容器和 K8s 上的使用门槛。
- 按需弹性,按量付费
ACS 业内首创超灵活 Pod 配置模式,提供 1:1~1:8 的资源配比,支持秒级弹性,以从容应对流量波动,支持秒级计费,提供按量付费、资源预留和节省计划 3 种计费模式,实现按需弹性。
- 场景丰富,灵活调配
ACS 和阿里云的其他产品做了深度集成,支持开源生态和自研产品无缝迁移上云。
- 自由组合,高性价比
ACS 专注于 Pod 定义,屏蔽机型代际和差异,同时支持通用型、任务型和标准型3种实例类型,让计算资源更普适。
接下来,我将围绕以上 4 个核心特性,展开描述。
极简易用,快速上手
ACS 简化了 ClusterLess 和 NodeLess 两种形态,客户无须去关注 K8s 集群的运维和管理,也无须去关心节点的各种信息和运维。不同类型用户可以选用自己更熟悉的方式来使用 ACS。
- 面向新手用户:通过 ACS 控制台,进行简单的白屏操作,就可以实现应用部署。
- 面向开发者:ACS 支持 Yaml 方式进行实例等配置,然后以 K8s API 快速部署应用。
- 面向企业客户:ACS 支持 K8s Yaml 和 OpenAPI 来适配自己的 CI/CD 系统。
按需弹性,按量付费
ACS 支持超灵活的 Pod 资源规格配置,0.25c/0.25GB 起步,提供了 1:1~1:8 的 CPU 与内存配比选择,帮助客户更灵活的匹配业务需求,并支持秒级弹性和秒级计费,从容应对流量峰值波动。
企业通常会通过资源预留,来保障算力资源的确定性。适当的资源预留,既可以保障业务长期的稳定运行,也可以避免过多的资源预留导致的浪费。所以,客户基于 ACS,设定恰当的资源预留水位,在资源预留水位之外,遇到业务流量高峰时,通过秒级弹性能力,应对业务的快速扩容。在这种使用方式下,业务资源占用可以尽量贴近流量曲线,减少资源浪费。
此外,ACS 支持节省计划,来提供更好的产品折扣权益。
场景丰富,调配灵活
ACS 支持用户自研和开源的应用,例如微服务、Web 应用、Spark 应用等,同时和阿里云的云产品做了深度的集成,包括人工智能平台 PAI 等。
ACS 向客户提供了一个算力集群,在这个算力集群内,同时支持上述的几种负载运行在大集群内,并在业内首创算力调配功能,支持客户将算力资源在自建负载之间、云产品负载之间、自建负载和云产品负载之间,灵活调配,实现资源共享,提升闲置资源利用率。
ACS 支持开源生态和自建产品无缝迁移上云,云原生调度系统 Koordinator 兼容 K8s 生态,开源项目可以无缝迁移到 ACS,用户自研产品则可以通过 K8s Yaml 快速迁移到 ACS,同时支持自建 K8s 集群低成本迁移上云。
自由组合,高性价比
ACS 提供以下 3 种实例类型:
- 通用型实例:适合绝大部分容器化的工作负载,例如微服务、Web 应用,网络和视频应等。
- 任务型实例:适合成本敏感,且有一定容错能力的工作负载,例如大数据计算、音视频转码等。
- 独享型实例:适合延迟极度敏感的工作负载,例如高性能网络服务器、网关系统、中间件系统等。
在这三种类型中,ACS 都实现了屏蔽机型和代际的功能。这个产品能力可以帮助客户在面对多种不同场景和负载,需要多种类型互相做组合和应用时,自动实现最优的性价比,可节省多达 20% 的资源成本。
ACS 的关键技术
ACS 无缝集成阿里云的产品体系,包括应用实时监控服务 ARMS、日志服务 SLS、负载均衡 SLB、弹性公网 IP,并支持 EBS、NAS 等存储服务,和 RAM、KMS 等访问控制服务,以及支持 K8s 生态和扩展,支持 Extension Webhook、Controller 和 Operator。
ACS 采用了超大规模的多负载差异化 SLO 增强的调度系统,该调度器来来源于阿里巴巴双十一的大规模实践经验,此外,我们也针对微服务、Java应用、AI 大数据等做了深优化。这个调度系统提供了开源版本,即 Koordinator,因此支持社区生态无缝对接到 ACS 产品上,实现各类差异化硬件的兼容,包括 GPU、NPU 等。此外,该调度系统具备以下 3 大优势:
- 标准化:基于社区标准 scheduleframework 构建,全面兼容 kubernetes 调度生态。
- 高效率:具备丰富的资源调优能力,在拓扑感知、负载感知、QoS 感知等方面深度优化,实现 3w 次/秒调度。
- 大规模:在外部客户及内部业务场景中得到大规模使用,支持超大规模的集群(单集群超百万核)。
K8s 是一个单租的系统,自建 K8s 面临多租隔离安全的设计需求,包括控制面上 K8s 的 Master,全套管控链路的多租改造,以及在数据面上的安全隔离需求。
依托于阿里云的安全容器技术,ACS 可有效避免多个不同租户的负载运行在同一个物理节点上时所带来的干扰,以及互相之间安全可见的问题。存储上,ACS 采用了阿里云高性能块存储 EBS,满足容器在存储上的隔离和性能多租需求。网络上,ACS 对接阿里云网络服务VPC,提供高性能的容器网络。
接下来看一下 3 个典型的场景。
典型应用场景
通用型、任务型实例自由组合使用
采用 ACS 通用型实例支持 Web应用、CICD 工作流任,采用 ACS 任务型实例支持大数据 Spark 任务,还可以根据不同工作负载的应用特征,组合使用通用型实例和任务型实例,实现性能更稳定、价格更优的目的。
独享型实例支撑延时敏感型业务
客户通常会将互联网在线应用使用到的资源,例如数据、静态图片等缓存到 Redis 中,以提高应用的读写性能和加载速度,此时,基于 Kubernetes Statefulset 和 ACS 独享型实例来搭建 Redis 集群,实现稳定无干扰,并通过秒级启动、秒级弹性,以及细粒度的灵活配置实例规格,提升资源利用率。
云产品复用闲置的预留资源
假设客户的业务负载在白天需要 1100Core,夜间需要 300Core,总共申请预留资源 1000Core,MaxCompute 峰值 800Core。因此,白天在线峰值时,ACS 使用预留资源 1000Core,再增加 100Core 的弹性资源,夜间资源预留存在 700Core 的闲置,则可以调度给 MaxCompute 使用,从而节省了夜间 700Core 的闲置浪费。
容器计算服务 ACS 邀测已经开启,欢迎大家参与申请试用,通过亲身体会,切身感受 ACS 如何帮助客户更好的利用云所带来的技术红利。