0
点赞
收藏
分享

微信扫一扫

k8s集群节点维度HPA

在实际工作中,随着业务的不断发展,我们常常需要做一些扩容缩容操作。在node维度上,可以通过对特定的指标进行监控,在业务访问高峰期时对相应的资源进行扩容,并在业务高峰期结束后,再对已扩容资源进行缩容,从而避免资源的浪费。

一、实现原理

以阿里云主机为例,此方案适用于以云主机为基础搭建的K8s集群:

1)准备适量已做好节点初始化的机器,并设置kubelet开机自启动(因为开机后会自动启动kubelet,从而将节点自动加入到集群中),停机冷备,做为HPA的节点资源池,这样做的好处是,可以简化HPA的执行流程,并大大缩短执行HPA的时间

2)设置弹性规则,规则中填写扩容和缩容的阈值、缩容等待时间,以及对应的节点标签

3)根据规则中的节点标签集合生成标签选择器

labelSelector := labels.SelectorFromSet(labelMap)

4)根据标签选择器去查找相匹配的节点集合

clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{LabelSelector: labelSelector})

5)检测对应节点的资源指标,符合弹性规则的扩容/缩容条件,则触发对应的扩容/缩容动作

二、检测维度

每间隔5分钟,对Selectors选择器指定的节点进行检测:

1)若所有节点中的指标最小值超出扩容的阈值,则触发扩容流程;

2)若所有节点中的指标最大值低于缩容的阈值,且持续时间超过静默时间,则触发缩容流程。

三、扩容流程

k8s集群节点维度HPA_选择器

四、缩容流程

k8s集群节点维度HPA_云主机_02


举报

相关推荐

0 条评论