最近更新时间:2022-01-04 17:49:59
Cluster AutoScaler (简称CA)是一个自动扩展和收缩 Kubernetes 集群 Node 的扩展。当集群容量不足时,它会自动去 Cloud Provider 创建新的 Node,而在 Node 长时间(超过 10 分钟)资源利用率很低时(低于 50%)自动将其删除以节省开支。
Cluster AutoScaler 定期(默认间隔 10s)检测是否有充足的资源来调度新创建的 Pod,当资源不足时会调用 Cloud Provider 创建新的 Node。
每当kubernetes调度程序找不到一个运行pod的地方时,它会将pod的PodCondition设置为false,并将原因设置为“unschedulable ”。集群自动扩缩容程序正是每隔一段时间扫描一次是否有不可调度的pod来进行扩容的,如果有就尝试扩容节点来运行这些pod。
当集群中有多个节点池时,可以通过选项配置选择节点池的策略,支持如下三种方式:
Cluster AutoScaler 也会定期(默认间隔 10s)自动监测 Node 的资源使用情况,当一个 Node 长时间(超过 10 分钟其期间没有执行任何扩展操作)资源利用率都很低时(默认值低于 50%)并且这个node上的pod可以被调度到别的节点上,那么CA自动将其从集群中删除。此时,原来的 Pod 会自动调度到其他 Node 上面。
当 Node 上面的 Pods 满足下面的条件之一时,Node 不会缩容:
Pod 配置了 PodDisruptionBudget (PDB),当Pod不满足PDB时,不会缩容。
Node 上运行了 kube-system命名空间下非 DaemonSet 管理的 的pod。
Pod 不是通过 deployment, replicaset, job, statefulset 等控制器创建的。
Pod 使用了本地存储。
其他原因导致的 Pod 无法重新调度,如亲和、反亲和等,无法调度到其他节点。
纯净模式