当您需要在短时间内快速创建大量Pod时,ECS节点扩容速度可能无法满足要求,而预留额外的ECS节点又会产生资源浪费。借助虚拟节点,您无需提前预留和维护固定资源池,可以直接将Pod调度到虚拟节点上以弹性容器实例ECI来运行,在保障弹性的同时节约资源成本。
为什么要使用虚拟节点
虚拟节点是什么
在ACK集群中,节点是运行工作负载的基本单位,提供实际的计算和存储资源。通常,您的ACK集群会有至少一组ECS节点池,创建Pod时,kubelet会将Pod调度到ECS节点上运行。这种架构能很好地应对流量稳定的业务。如果您的业务有不易提前预测的瞬时波峰,尽管ACK支持弹性伸缩,但ECS节点池扩容时,ECS实例的创建和启动本身会有一定的额外耗时。借助虚拟节点,您可以直接调度Pod到阿里云弹性容器实例ECI(Elastic Container Instance)上运行,降低节点运维操作负担,同时避免产生闲置节点资源,降低成本。
虚拟节点通过ack-virtual-node组件将计算资源进行封装,无需管理底层基础设施即可直接部署工作负载,ack-virtual-node会自动将应用Pod调度到ECI上运行。ECI是Serverless容器运行服务,一个ECI实例相当于一个Pod。使用ECI部署容器应用时,您只需要提供打包好的Docker镜像,即可运行容器,并仅为容器实际运行消耗的资源付费。
功能优势
虚拟节点有如下使用优势。
免运维:无需关心底层资源池的创建,减少运维负担。同时,虚拟节点为托管资源,省去Kubernetes节点的常规运维操作,例如系统升级、安全补丁修复等。
超大容量:最多可弹出50,000个Pod,无需提前规划容量。
重要在Pod大量关联 Service的情况下,建议保持在20,000个以内。
秒级弹性:在极短时间内创建出数千Pod,无需担心突发业务流量因Pod创建时延受到影响。
安全隔离:Pod基于ECI创建,每个容器实例底层通过轻量级虚拟化安全沙箱技术完全强隔离,容器实例间互不影响。
节省成本:应用按需创建,按量计费,不运行不计费,省去资源闲置费用,同时Serverless带来更低的运维成本。
使用场景
基于虚拟节点本身的特性和优势,其典型使用场景如下所示。
在线业务
对于在线教育、电商等时常出现突发流量的在线业务,支持秒级扩容,避免流量激增扩容不及时可能导致的系统故障,以及平时大量闲置资源造成的浪费。
数据处理
处理Spark、Presto等大批量在线数据并发任务时,可以不再因为成本原因受限于底层资源, 从而导致数据处理任务的并发度受限。支持在短时间内快速弹出数千Pod,满足大数据的在线处理诉求。
AI任务
针对模型训练、模型推理等无需持续运行且需要大量计算资源的AI任务,无需预留资源,按需使用,按秒计费,降低AI推理成本。同时,支持秒级弹性,可以快速响应突发的任务需求。
CI/CD测试环境
针对CI/CD过程中的批量测试任务,例如CI打包、压力测试、仿真测试等,可以借助虚拟节点随时创建和释放容器实例。支持按需使用,按秒计费,实现低成本的大规模资源供应。
Job和CronJob
这些任务无需持续运行,任务完成后,Job会自动终止,对应的Pod也会被删除。虚拟节点支持在任务完成后自动停止计费并释放计算资源,避免资源闲置浪费。
使用限制
请在使用虚拟节点前,了解其存在的使用限制。
不支持DaemonSet型工作负载。您可以通过将DaemonSet重新配置为Pod的Sidecar容器来运行。
不支持在Pod
manifest
中指定HostPath
和HostNetwork
。不支持Privileged特权容器。您可以使用Security Context为Pod添加Capability。
说明特权容器功能正在内测中。如需体验,请提交工单申请。
不支持NodePort类型的Service,不支持配置Session Affinity。
不支持深圳金融云,不支持政务云。
相关计费
使用虚拟节点时,虚拟节点功能本身不计费,ACK集群管理费用和相关阿里云云产品(包括ECI、VPC、负载均衡实例等)资源费用正常收取。其中,ECI Pod运行所产生的费用请参见ECI的计费概述。
快速体验
您可以参见通过虚拟节点将Pod调度到ECI上运行快速体验通过虚拟节点运行工作负载Pod的基础用法。
部署ack-virtual-node组件,在集群中启用虚拟节点功能。
为Pod或Namespace添加Label,借助虚拟节点将工作负载Pod调度到ECI上运行。
相关操作
灵活配置ECI Pod
在集群维度通过编写ECI Profile配置文件(名为eci-profile的ConfigMap)批量配置ECI Pod,例如指定安全组、指定交换区(即ECI Pod所在的可用区)等。配置更新后,ECI Pod无需重启,新建ECI Pod可以即时生效,存量ECI Pod滚动发布后可生效。详细信息,请参见配置eci-profile。
对于ECI某些功能特性,例如指定ECI实例规格、启用镜像缓存以加速Pod创建、为ECI Pod分配IPv6地址、增加临时存储空间大小等,可以通过Pod Annotation来实现,请参见ECI Pod Annotation。
节点混合部署场景下配置Pod调度策略
ACK提供多种调度方案。您可以指定应用Pod只调度到虚拟节点,也可以指定Pod优先调度到ECS节点(包年包月或按量付费),并在ECS节点资源不足时再调度至虚拟节点,同时实现逆序缩容。请参见虚拟节点调度方案对比及介绍完成调度策略的选型。
调度Pod至指定的OS或Arch
调度至指定Arch:ACK集群默认将工作负载Pod调度到x86架构的虚拟节点,并在x86节点资源不足时保持等待x86节点资源。如果您期望将工作负载Pod调度至Arm架构的虚拟节点,请参见调度至Arm虚拟节点。
调度至指定OS:如果您的容器需要运行在Windows环境中,您可以在集群中添加Windows虚拟节点,并将Pod调度到该虚拟节点上,请参见(邀测)调度Pod到Windows虚拟节点。
常见问题
如您在使用虚拟节点时遇到问题,可参见虚拟节点FAQ进行自排查。