本文介绍阿里云容器服务 Serverless 版的产品简介、核心优势、与ACK集群对比、应用场景、核心功能等信息,帮助您快速了解ACK Serverless集群。
产品简介
容器服务 Serverless 版是阿里云推出的无服务器Kubernetes容器服务。在容器服务 Serverless 版提供的ACK Serverless集群中,您无需购买节点即可直接部署容器应用,无需对集群进行节点维护和容量规划,并且根据应用配置的CPU和内存资源量进行按需付费。ACK Serverless集群提供完善的Kubernetes兼容能力,同时降低了Kubernetes使用门槛,让您更专注于应用程序,而不是管理底层基础设施。
ACK Serverless集群中的Pod基于阿里云弹性容器实例ECI运行在安全隔离的容器运行环境中。每个Pod容器实例底层通过轻量级虚拟化安全沙箱技术完全强隔离,容器实例间互不影响。
ACK Serverless集群包括ACK Serverless集群基础版和ACK Serverless集群Pro版。ACK Serverless集群Pro版是在ACK Serverless集群基础版的基础上,针对企业大规模生产环境进一步增强了可靠性、安全性,并且提供可赔付SLA的ACK Serverless集群。关于ACK Serverless集群Pro版的更多信息,请参见集群概述。
核心优势
核心优势 | 说明 |
开箱即用 | 低门槛快速创建集群,无需管理Kubernetes节点和服务器即可直接部署应用。 |
超大容量 | 集群无需额外配置即可轻松获得最多50,000个Pod容量,无需提前规划容量。 重要 在Pod大量关联 Service的情况下,建议保持在20,000个以内。 |
秒级弹性 | 始终确保在极短时间内创建出数千Pod,无需担心突发业务流量因Pod创建时延受到影响。 |
弹性预测 | 依据历史预测资源用量提前准备,突发业务流量处理更加平滑。 |
原生兼容 | 完善的Kubernetes兼容性,支持原生Kubernetes应用和生态,无缝迁移Kubernetes应用。 |
安全隔离 | Pod基于ECI服务创建,每个容器实例底层通过轻量级虚拟化安全沙箱技术完全强隔离,容器实例间互不影响。 |
降低成本 | 应用按需创建,按量计费,不运行不计费,没有资源闲置费用,同时Serverless带来更低的运维成本。 |
服务集成 | 支持容器应用与阿里云基础服务无缝整合;支持容器与虚拟机应用的互联互通。 |
丰富的产品层次能力,支持更高等级可靠性、SLA和更大集群容量。支持基础版无缝迁移到Pro版。 |
ACK Serverless集群与ACK集群的对比
如下图所示,左侧为ACK集群,右侧为ACK Serverless集群。
应用场景
应用场景 | 说明 |
应用托管 | ACK Serverless集群中无需管理和维护节点,无需容量规划,极大降低业务的基础设施管理和运维成本。 |
突发业务 | 对于有明显的波峰波谷特征的业务负载,例如在线教育、电子商务等行业,ACK Serverless集群的秒级伸缩能力可以显著降低计算成本,减少闲置资源浪费,平滑应对突发流量高峰。更多信息,请参见弹性伸缩概述。 |
数据计算 | 面对Spark等数据计算需求,ACK Serverless集群可以在短时间内启动大量Pod及时处理任务,计算结束时Pod自动释放停止计费,极大降低整体计算成本。更多信息,请参见通过ACK Serverless创建Spark计算任务。 |
CI/CD | 基于ACK Serverless集群搭建Jenkins或Gitlab-Runner等持续集成环境,并快速完成应用源码编译、镜像构建和推送以及应用部署的流水线,各持续集成任务之间安全隔离互不影响,同时无需维护固定资源池,降低计算成本。更多信息,请参见在ACK Serverless集群中部署Jenkins并完成应用构建和部署、ACK Serverless弹性低成本CI/CD。 |
定时任务 | 在ACK Serverless集群中运行定时任务,任务结束后停止计费。无需维护固定资源池,避免资源闲置浪费。更多信息,请参见容器定时伸缩(CronHPA)。 |
核心功能
ACK Serverless集群提供完善的Kubernetes兼容性,除原生Kubernetes功能外,建议您在将生产业务部署到ACK Serverless集群前关注如下功能。
ECI Profile
ACK Serverless集群底层基于ECI服务来运行Pod,通过配置ECI Profile,您可以更加细粒度地控制Pod及Pod相关的集群行为。ECI Profile本质是位于kube-system命名空间下的名为eci-profile的ConfigMap,主要字段说明如下:
字段 | 说明 |
vpcId | Pod所在专有网络的唯一标识。 |
securityGroupId | 专有安全组的唯一标识。 |
vSwitchIds | 专有网络内交换机的唯一标识,可配置多个半角逗号(,)间隔。虚拟节点将基于交换机生成。 |
selectors | Pod选择器。支持基于命名空间和Label选择Pod,并自动追加Annotation或Label。 |
enableClusterIp | 是否启用ClusterIP。默认为true。 |
enableLogController | 是否启用阿里云日志控制器。默认为false。 |
enablePVCController | 是否启用PVC控制器。默认为false。 |
enablePrivateZone | 是否启用PrivateZone服务发现能力。默认为false。 |
featureGates | 不稳定功能门禁开关。 |
更多详细说明,请参见ECI实例概述。
虚拟节点
使用ACK Serverless集群时,您无需再管理节点,但为了保持与原生Kubernetes的兼容性,您仍可以在集群中看到虚拟节点。虚拟节点拥有超大的计算资源容量,让ACK Serverless集群获得极大的弹性能力,而不必担心突发业务流量。虚拟节点依据eci-profile ConfigMap中的vSwitchIds
生成,本身不占用任何计算资源。
Pod配置
在ACK Serverless集群中创建Pod,您可以通过添加Annotation来定制Pod,详情请参见下表:
下表列举的Annotation仅适用于创建到虚拟节点上的Pod(即ECI实例),调度到普通节点上的Pod不受这些Annotation影响。
Annotation请添加在Pod的
metadata
下,例如:配置Deployment时,Annotation需添加在spec.template.metadata
下。Pod Annotation的优先级高于ECI Profile中配置的相同功能。
参数 | 示例值 | 描述 | 相关文档 |
k8s.aliyun.com/eci-security-group | sg-bp1dktddjsg5nktv**** | 安全组ID。 | |
k8s.aliyun.com/eci-vswitch | vsw-bp1xpiowfm5vo8o3c**** | 交换机ID,支持指定多个交换机实现多可用区功能。 | |
k8s.aliyun.com/eci-schedule-strategy | vSwitchOrdered | 多可用区调度策略。取值范围:
| |
k8s.aliyun.com/eci-ram-role-name | AliyunECIContainerGroupRole | RAM角色,赋予ECI访问阿里云产品的能力。 | |
k8s.aliyun.com/eci-use-specs | 2-4Gi,4-8Gi,ecs.c6.xlarge | ECI实例规格,支持指定多规格,包括指定vCPU和内存,或者ECS规格。 | |
k8s.aliyun.com/eci-spot-strategy | SpotAsPriceGo | 抢占式实例策略。取值范围:
| |
k8s.aliyun.com/eci-spot-price-limit | 0.5 | 抢占式实例价格。 说明 仅当k8s.aliyun.com/eci-spot-strategy设置为SpotWithPriceLimit时有效。 | |
k8s.aliyun.com/eci-cpu-option-core | 2 | CPU物理核心数。 | |
k8s.aliyun.com/eci-cpu-option-ht | 1 | 每核线程数。 | |
k8s.aliyun.com/eci-reschedule-enable | "true" | 是否开启ECI重调度。 | |
k8s.aliyun.com/pod-fail-on-create-err | "true" | 创建失败的ECI实例是否体现Failed状态。 | |
k8s.aliyun.com/eci-image-snapshot-id | imc-2zebxkiifuyzzlhl**** | 指定镜像缓存ID。 说明 使用镜像缓存支持手动指定和自动匹配两种方式,建议使用自动匹配方式。 | |
k8s.aliyun.com/eci-image-cache | "true" | 自动匹配镜像缓存。 说明 使用镜像缓存支持手动指定和自动匹配两种方式,建议使用自动匹配方式。 | |
k8s.aliyun.com/acr-instance-id | cri-j36zhodptmyq**** | ACR企业版实例ID。 支持跨地域指定ACR企业版实例,此时需在实例ID前加上所属地域,例如"cn-beijing:cri-j36zhodptmyq****"。 | |
k8s.aliyun.com/eci-eip-instanceid | eip-bp1q5n8cq4p7f6dzu**** | EIP实例ID。 | |
k8s.aliyun.com/eci-with-eip | "true" | 是否自动创建并绑定EIP。 | |
k8s.aliyun.com/eip-bandwidth | 5 | EIP带宽。 | |
k8s.aliyun.com/eip-common-bandwidth-package-id | cbwp-2zeukbj916scmj51m**** | 共享带宽包ID。 | |
k8s.aliyun.com/eip-isp | BGP | EIP线路类型,仅按量付费的EIP支持指定。取值范围:
| |
k8s.aliyun.com/eip-internet-charge-type | PayByBandwidth | EIP的计量方式。取值范围:
| |
k8s.aliyun.com/eci-enable-ipv6 | "true" | 是否绑定一个IPv6地址。 | |
k8s.aliyun.com/eci-ipv6-bandwidth-enable | "true" | 是否开通ECI的IPv6公网通信能力。 | |
k8s.aliyun.com/eci-ipv6-bandwidth | 100M | 设置IPv6地址的公网带宽峰值。 | |
kubernetes.io/ingress-bandwidth | 40M | 入方向带宽。 | |
kubernetes.io/egress-bandwidth | 20M | 出方向带宽。 | |
k8s.aliyun.com/eci-extra-ephemeral-storage | 50Gi | 临时存储空间大小。 | |
k8s.aliyun.com/eci-eviction-enable | "true" | 设置自动驱逐临时存储空间不足的ECI Pod。 | |
k8s.aliyun.com/eci-core-pattern | /pod/data/dump/core | Core dump文件保存目录。 | |
k8s.aliyun.com/eci-ntp-server | 100.100.*.* | NTP Server。 | |
k8s.aliyun.com/plain-http-registry | "harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80" | 自建镜像仓库地址。 使用HTTP协议的自建镜像仓库中的镜像创建ECI实例时,需配置该参数,使ECI使用HTTP协议拉取镜像,避免因协议不同而导致镜像拉取失败。 | |
k8s.aliyun.com/insecure-registry | "harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80" | 取值为自建镜像仓库地址。 使用自签发证书的自建镜像仓库中的镜像创建ECI实例时,需配置该参数来跳过证书认证,避免因证书认证失败而导致镜像拉取失败。 |
更多详细说明,请参见ECI Pod Annotation。
网络管理
集群中的ECI Pod默认使用Host网络模式,占用交换机vSwtich的一个弹性网卡ENI资源,与VPC内的ECS、RDS互联互通。
类型 | 说明 |
Service |
|
Ingress |
|
服务发现 | 如果您的集群内部应用需要Service的服务发现功能,请在创建集群时开启PrivateZone或CoreDNS。您也可以在集群创建后通过ECI Profile开启PrivateZone或通过组件管理安装CoreDNS组件。 |
支持给ECI Pod挂载EIP,可自动创建或者绑定到已有的EIP实例。 |
存储管理
存储方式 | 说明 |
阿里云块存储(Disk) |
|
阿里云文件存储(NAS) |
|
可观测性
功能 | 说明 |
日志 | 在ACK Serverless集群中,您可以通过编辑eci-profile来启用日志服务,之后将开始收集Pod日志,详情请参见通过Pod环境变量采集应用日志。 |
监控 | 您可以通过组件安装arms-prometheus组件启用集群监控,详情请参见阿里云Prometheus监控。 |
镜像管理
ACK Serverless集群支持通过ImageCache来加速创建Pod,这对快速响应您的业务至关重要。关于如何为Pod启用ImageCache,请参见使用ImageCache。
当您在ACK Serverless集群中创建Pod使用的镜像来自ACR,还可以通过配置ACR企业版免密来简化配置。
弹性伸缩
ACK Serverless集群中没有真实节点,所以无需考虑节点的容量规划,也无需考虑基于cluster-autoscaler的节点扩容,您只需要关注应用的按需扩容。建议您配置HPA或者CronHPA策略进行Pod的灵活按需扩容,详情请参见弹性伸缩概述。
授权管理
如果您的业务Pod需要访问阿里云云产品,您可以通过配置RRSA(RAM Roles for Service Accounts)来通过云产品鉴权。
集群管理
类型 | 说明 |
智能运维 | 您可以通过智能运维来定期检查ACK Serverless集群的健康度,或者进行集群升级或迁移的前置检查。 |
升级 | ACK Serverless集群支持集群无缝升级,您无需担心业务受影响。 |
Pro版 | 提供更高等级可靠性、SLA和更大集群容量。 |
迁移 | 支持将试用体验或者早期的ACK Serverless集群基础版无缝迁移到ACK Serverless集群Pro版以获得更高等级保证。 |
组件管理
ACK Serverless集群提供多种类型的组件以扩展集群功能,您可以根据业务需求部署、升级和卸载组件。具体操作,请参见管理组件。
组件托管
为简化集群运维,让您更专注于应用程序,ACK Serverless集群提供部分系统组件托管能力。例如,在ACK Serverless集群中创建的Kubernetes核心组件会被托管,包括Kube Scheduler、Cloud Controller Manager、Kube Controller Manager和Kube API Server等。除Kubernetes核心组件外,ACK Serverless集群会逐步上线存储、网络、监控等系统组件的托管形态。
组件托管后仍会在集群中创建ClusterRole、ClusterRoleBinding、ServiceAccount、Service、ConfigMap等对象,这些对象不会占用实际的ECI资源。为确保集群正常运行,请勿修改这些对象。
托管组件由ACK Serverless集群负责部署和维护,但您仍可以在ACK Serverless集群中使用相同的API与组件进行交互。托管组件具有如下优势:
不占用您账户下的ECI实例资源,节约开销。
无需自行部署和维护,自动化机制会确保组件处于最佳运行状态。
支持高可用架构。
应用管理
支持在容器服务管理控制台通过应用市场安装Helm应用,并通过Helm页面进行管理。具体操作,请参见使用Helm简化应用部署。
计费说明
ACK Serverless集群分为ACK Serverless集群基础版和ACK Serverless集群Pro版,不同类型集群的计费项和计费标准不同,详情请参见计费说明。
使用限制
使用ACK Serverless集群前,需要注意以下使用限制:
不支持DaemonSet型工作负载。您可以通过将DaemonSet重新配置为Pod的Sidecar容器来运行。
不支持在Pod
manifest
中指定HostPath
和HostNetwork
。不支持Privileged特权容器。您可以使用Security Context为Pod添加Capability。
说明特权容器功能正在内测中。如需体验,请提交工单申请。
不支持NodePort类型的Service,不支持配置Session Affinity。
不支持深圳金融云,不支持政务云。
联系我们
欢迎您使用钉钉搜索钉钉群号31544226加入ACK Serverless集群钉钉群。