云容器引擎 CCE-应用扩缩容优先级策略:应用扩缩容优先级策略介绍
应用扩缩容优先级策略介绍
开启应用扩缩容优先级策略,将会在集群中新增两类CRD资源,分别为Balancer与BalancerPolicyTemplate,并创建默认的扩缩容优先级策略,详情请参见默认应用扩缩容优先级策略。Volcano插件根据BalancerPolicyTemplate来获取各个节点的优先级,以控制应用扩容时Pod调度的优先级,同时volcano插件基于Balancer和BalancerPolicyTemplate来设置应用缩容时的优先级。
- BalancerPolicyTemplate CRD资源用来进行优先级策略定义。以默认扩缩容优先级策略为例,默认BalancerPolicyTemplate CR资源将会把包周期节点的优先级设置为最高,按需计费节点次之,virtual-kubelet节点(弹性至CCI)设置为最低。
- Balancer CRD资源用来申明扩缩容优先级的作用范围。创建Balancer CR资源时,可以指定某个命名空间下的工作负载作为生效范围,也可以具体指定某个Deployment或者某个ReplicaSet工作负载作为生效范围。
一个Balancer CR资源对应一个BalancerPolicyTemplate CR资源,两者结合共同申明哪些工作负载使用了哪些优先级策略。
插件默认的扩缩容优先级策略通过BalancerPolicyTemplate对象将包周期节点、按需计费节点、virtual-kubelet节点(弹性至CCI)三种类型分成不同的优先级,扩容时,volcano在调度新增Pod时将会考虑这些优先级,优先将Pod调度到优先级高的包周期节点上。
通过Balancer和BalancerPolicyTemplate对象,Volcano插件对Balancer作用范围内的Pod,根据BalancerPolicyTemplate对象定义的优先级分别打上以下注解:
- openvessel.io/workload-balancer-score:表示Pod的分值,对于高优先级节点上的Pod,其对应的分值也相对较大。
- autoscaling.volcano.sh/dominated-by-balancer:表示当前Pod受哪个Balancer对象控制,缩容时会优先缩容分值低的Pod。
如果用户原先的Pod已经存在社区支持的controller.kubernetes.io/pod-deletion-cost注解,那么缩容时将会按照该值定义的优先级来进行缩容。当两个Pod对应controller.kubernetes.io/pod-deletion-cost值相同时,才会按照openvessel.io/workload-balancer-score注解定义的优先级进行缩容。