在实际工作中,随着业务的不断发展,我们常常需要做一些扩容缩容操作。在node维度上,可以通过对特定的指标进行监控,在业务访问高峰期时对相应的资源进行扩容,并在业务高峰期结束后,再对已扩容资源进行缩容,从而避免资源的浪费。
一、实现原理
以阿里云主机为例,此方案适用于以云主机为基础搭建的K8s集群:
1)准备适量已做好节点初始化的机器,并设置kubelet开机自启动(因为开机后会自动启动kubelet,从而将节点自动加入到集群中),停机冷备,做为HPA的节点资源池,这样做的好处是,可以简化HPA的执行流程,并大大缩短执行HPA的时间
2)设置弹性规则,规则中填写扩容和缩容的阈值、缩容等待时间,以及对应的节点标签
3)根据规则中的节点标签集合生成标签选择器
4)根据标签选择器去查找相匹配的节点集合
5)检测对应节点的资源指标,符合弹性规则的扩容/缩容条件,则触发对应的扩容/缩容动作
二、检测维度
每间隔5分钟,对Selectors选择器指定的节点进行检测:
1)若所有节点中的指标最小值超出扩容的阈值,则触发扩容流程;
2)若所有节点中的指标最大值低于缩容的阈值,且持续时间超过静默时间,则触发缩容流程。