秒级弹性!探索弹性调度与虚拟节点如何迅速响应瞬时算力需求?
内容提要
阿里云容器服务ACK弹性调度使用虚拟节点满足业务弹性需求,配置ECI使用策略,按优先级调度ECS和ECI资源,通过节点亲和和Pod亲和降低通信时延和保证高可用。
延伸解读
弹性速度与位置:企业弹性的两个核心指标
文章指出,弹性速度和弹性位置是企业实施应用弹性时重点关注的两个核心指标。对于追求高可用和稳定性的企业,敏捷弹性可在流量突增时保证系统连续性,跨地域部署能在地域故障时维持服务可用;对于大数据处理任务,快速弹性可缩短任务执行时间,集中部署则能减少网络通信时延。这两个指标共同决定了业务能否稳定高效运行。
虚拟节点如何实现秒级弹性
ACK通过虚拟节点技术无缝集成ECI资源,使业务能在集群内动态调用ECI。安装ack-virtual-node组件后,用户可配置ResourcePolicy定义ECI使用策略,例如优先调度ECS,资源用完后使用ECI。实际测试中,新Pod创建时间仅13秒,远低于自动伸缩节点所需的分钟级弹性时间,有效应对突发流量。
利用亲和性优化调度位置
对于大数据任务,通过节点亲和或Pod亲和可将ECS和ECI上的Pod调度到同一可用区,降低通信时延,提高吞吐量。文章提供了手动指定可用区和最优可用区感知调度两种方式,后者利用Pod亲和让调度器参考ECI建议选择算力更充足的可用区。需注意,当采用ECS+ECI弹性调度时,建议使用preferredDuringSchedulingIgnoredDuringExecution以避免强制亲和导致的问题。
多可用区部署保障在线业务高可用
在线业务可通过拓扑分布约束实现ECS和ECI Pod遵循相同的多可用区分布,从而保证高可用。示例中,配置maxSkew为1的约束后,Pod在可用区D和C上分别分布5个和4个,满足最大倾斜度要求。结合ResourcePolicy优先使用ECS、不足时使用ECI,业务能在资源不足时自动扩展,维持稳定运行。
Q&A
阿里云ACK弹性调度如何利用虚拟节点实现秒级弹性?
ACK弹性调度通过安装虚拟节点组件(ack-virtual-node)将ECI资源无缝集成到集群中,使Pod可以直接调度到虚拟节点上,从而利用ECI的十秒级弹性速度应对突发流量。
如何配置ACK弹性调度以优先使用ECS,ECS资源不足时再使用ECI?
通过创建ResourcePolicy,设置strategy为prefer,并在units中按顺序列出ecs和eci资源,例如:apiVersion: scheduling.alibabacloud.com/v1alpha1, kind: ResourcePolicy, spec: strategy: prefer, units: - resource: ecs - resource: eci。这样Pod会优先调度到ECS,ECS资源用完后自动使用ECI。
在ACK弹性调度中,如何降低大数据任务在ECI上的通信时延?
可以通过节点亲和(nodeAffinity)或Pod亲和(podAffinity)将ECI Pod限制在特定可用区,使其与ECS Pod位于同一可用区,从而减少网络通信延迟,提高吞吐量。
如何保证在线业务在ACK弹性调度下的高可用性?
可以通过Pod的拓扑分布约束(topologySpreadConstraints)实现业务Pod在多个可用区均匀分布,结合ResourcePolicy在ECS资源不足时使用ECI,从而保证高可用。
ACK弹性调度中,如何让ECI Pod自动选择算力更充足的可用区?
可以使用Pod亲和(podAffinity)并配合ECI的可用区建议,调度器会自动选择算力更充足的可用区。建议使用preferredDuringSchedulingIgnoredDuringExecution以避免强制约束导致的问题。
安装虚拟节点组件后,如何验证虚拟节点是否安装成功?
安装成功后,可以通过kubectl get no命令查看集群中的虚拟节点,如果能看到若干虚拟节点,即表示安装成功。