全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:ACK集群虚拟节点调度方案对比及介绍

更新时间:Nov 22, 2024

针对虚拟节点,ACK托管集群(Pro版和基础版)和ACK专有集群支持的调度方式不同,且有其特定的使用场景,例如直接指定Pod只调度到虚拟节点、跨可用区打散等。您可以依据调度场景以及集群类型,参考本文选择合适的调度方式。

常见虚拟节点调度场景

  1. 只调度到虚拟节点。

  2. 优先调度到ECS节点,在ECS节点资源不足时,再将Pod调度到虚拟节点。

ACK集群基础版中,调度场景1推荐您使用label alibabacloud.com/eci=true完成,调度场景2推荐您升级至ACK集群Pro版,以获取更丰富的产品层次能力、更高等级可靠性、SLA保障和更大集群容量。ACK支持ACK集群基础版无缝迁移到ACK集群Pro版,请参见 热迁移ACK集群基础版至ACK集群Pro版

注意事项

  • 使用Labelalibabacloud.com/eci=true的方式优先级较高。如果与如下调度方式混用,会导致如下调度方式失效。

    • Kubernetes原生调度语义(nodeSelector、亲和性与反亲和性、Pod拓扑分布约束)

    • ResourcePolicy

    • ElasticResource(Annotation:alibabacloud.com/burst-resource

  • 不推荐您使用ElasticWorkload和ElasticResource(Annotation:alibabacloud.com/burst-resource,这些组件或注解处于非活跃开发状态。

  • virtual-kubelet-autoscaler组件目前处于停止维护状态。推荐您将ACK集群基础版升级至ACK集群Pro版,并卸载该组件,避免占用节点资源。您可以基于Kubernetes原生调度语义实现ECI Pod的打散部署及亲和部署。具体操作,请参见实现ECI Pod可用区打散以及亲和调度

方案对比及选型建议

关于表格中字段的说明:

  • 优先级调度:集群中存在不同的节点类型时,可以自行配置Pod调度到不同节点类型的优先级。例如优先调度到ECS节点,ECS节点不足时再调度到虚拟节点。

    如果某种方式不支持优先级调度,表明使用该方式时,无法对不同节点集合进行优先级编排。例如通过alibabacloud.com/eci=true只能将指定Pod调度到虚拟节点,无法将Pod优先调度到ECS,在ECS资源不足时再调度到虚拟节点。

  • 严格的调度策略:调度到不同类型节点池时的规则是否为强约束。

    • 非严格的调度策略为软约束。例如,节点亲和性的preferredDuringSchedulingIgnoredDuringExecution会优先调度到ECS节点,但可能会在节点综合打分策略影响下,在ECS节点资源尚存时仍旧调度到虚拟节点。

    • 严格的调度策略为硬约束。例如,ResourcePolicy能够保证在ECS节点的资源满足Pod需求时一定将Pod调度到ECS节点上。

ACK集群Pro版

调度方式

典型场景

优先级调度

优先缩容ECI Pod

是否推荐使用

相关操作文档

labels:alibabacloud.com/eci=true

指定只调度到虚拟节点,但不支持指定是哪一个虚拟节点。

不支持

不涉及

推荐

通过虚拟节点将Pod调度到ECI上运行

Kubernetes原生调度语义

nodeSelector

添加Toleration后,指定只调度到虚拟节点上,同时可以指定调度到哪一个虚拟节点。

不支持

不涉及

推荐

nodeSelector

亲和性与反亲和性

通过Taint、Toleration和NodeAffinity,指定只调度到ECI、只调度到ECS或优先调度到ECS(例如在ECS节点资源不足时调度到虚拟节点),是一种弹性调度策略。

同时支持(且仅支持)先缩容ECI,再缩容ECS。

支持(非严格的调度策略)

支持

推荐

指定ECS和ECI的资源分配

Pod拓扑分布约束

跨可用区打散,实现高可用和高性能调度需求。

不支持

支持

推荐

实现ECI Pod可用区打散以及亲和调度

ResourcePolicy

  • 支持基于节点池的优先级调度,例如优先调度到节点池A,资源不足时调度到节点池B。

  • ECS和ECI混部场景下,还支持配置资源付费类型,例如优先调度到包年包月的ECS,然后到按量付费的ECS,最后到ECI。

    同时,支持按原调度顺序逆序缩容,例如先缩容ECI,再缩容按量付费的ECS,最后缩容包年包月的ECS。

支持(严格的调度策略)

支持

推荐

自定义弹性资源优先级调度

UnitedDeployment

支持根据Deployment应用副本数制定调度到ECS或虚拟节点的策略,例如,副本数10以内优先使用包年包月的ECS资源,超出10个不超出20个的使用Spot资源,超出20个的再使用ECI资源。

支持

支持

推荐

ElasticWorkload

(非活跃开发状态,建议使用UnitedDeployment)

将Deployment副本进行分组调到ECS或虚拟节点。

支持

支持

不推荐

安装Elastic Workload(停止维护)

ElasticResource(Annotation:alibabacloud.com/burst-resource

(非活跃开发状态)

仅支持两种弹性调度策略:

  • ECS节点资源不足时调度到虚拟节点(弹性调度策略为eci)。

  • 只调度到虚拟节点(弹性调度策略为eci_only)。

支持

支持

不推荐

通过ElasticResource实现ECI弹性调度(停止维护)

virtual-kubelet-autoscaler组件

(已停止维护)

仅支持优先调度到ECS节点,在ECS节点资源不足时再调度到虚拟节点。

支持

支持

不推荐

ACK集群基础版ACK专有集群

调度方式

典型场景

优先级调度

优先缩容ECI Pod

是否推荐使用

相关操作文档

labels:alibabacloud.com/eci=true

指定只调度到虚拟节点,但不支持指定是哪一个虚拟节点。

不支持

不涉及

推荐

通过虚拟节点将Pod调度到ECI上运行

UnitedDeployment

支持根据Deployment应用副本数制定调度到ECS或虚拟节点的策略,例如,副本数10以内优先使用包年包月的ECS资源,超出10个不超出20个的使用Spot资源,超出20个的再使用ECI资源。

支持

支持

推荐

UnitedDeployment

Kubernetes原生调度语义

nodeSelector

添加Toleration后,指定只调度到虚拟节点上,同时可以指定调度到哪一个虚拟节点。

不支持

支持

不推荐

相比于ACK集群Pro版ACK集群基础版ACK专有集群中的kube-scheduler在Pod调度时无法感知底层库存情况,所以生产成功的确定性会降低。

nodeSelector

亲和性与反亲和性

通过Taint、Toleration和NodeAffinity,指定只调度到ECI、只调度到ECS或优先调度到ECS(例如在ECS节点资源不足时调度到虚拟节点),是一种弹性调度策略。

支持(非严格的调度策略)

支持

Affinity and anti-affinity

Pod拓扑分布约束

跨可用区打散,实现高可用和高性能调度需求。

不支持

支持

Pod topology spread constraints

ElasticWorkload

(非活跃开发状态,建议使用UnitedDeployment)

将Deployment副本进行分组调到ECS或虚拟节点。

支持

支持

不推荐

安装Elastic Workload(停止维护)

ElasticResource(Annotation:alibabacloud.com/burst-resource

(非活跃开发状态)

仅支持两种弹性调度策略:

  • ECS节点资源不足时调度到虚拟节点(弹性调度策略为eci)。

  • 只调度到虚拟节点(弹性调度策略为eci_only)。

支持

支持

不推荐

通过ElasticResource实现ECI弹性调度(停止维护)

virtual-kubelet-autoscaler组件

(已停止维护)

仅支持优先调度到ECS节点,在ECS节点资源不足时再调度到虚拟节点。

支持

支持

不推荐