云容器引擎 CCE-节点伸缩原理:Autoscaler工作原理

时间:2023-11-01 16:25:55

Autoscaler工作原理

Autoscaler(简称CA)的主要流程包括两部分:

  • ScaleUp流程: CA会每隔10s检查一次所有不可调度的Pod,根据用户设置的策略,选择出一个符合要求的节点组进行扩容。
  • ScaleDown流程:CA每隔10s会扫描一次所有的Node,如果该Node上所有的Pod Requests少于用户定义的缩容百分比时,CA会模拟将该节点上的Pod是否能迁移到其他节点,如果可以的话,当满足不被需要的时间窗以后,该节点就会被移除。

如上所述,当集群节点处于一段时间空闲状态时(默认10min),会触发集群缩容操作。

当节点存在以下几种状态的pod时,不可缩容:

  1. 节点上的pod有设置PodDisruptionBudget,当移除pod不满足对应条件时,节点不会缩容。
  2. 节点上的pod由于一些限制,如亲和、反亲和或者taints等,无法调度到其他节点,节点不会缩容。
  3. 节点上的pod拥有"cluster-autoscaler.kubernetes.io/safe-to-evict": "false"这个annotations时,节点不缩容。
  4. 节点上存在kube-system namespace下的Pod(除kube-system daemonset创建的Pod),节点不缩容。
  5. 节点上有非controller(deployment/replica set/job/stateful set)创建的Pod,节点不缩容。
support.huaweicloud.com/usermanual-cce/cce_01_0296.html