温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现K8S Cluster Autoscaler 集群自动伸缩

发布时间:2021-12-16 10:40:00 来源:亿速云 阅读:340 作者:柒染 栏目:互联网科技

如何实现K8S Cluster Autoscaler 集群自动伸缩,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

什么是 cluster-autoscaler

Cluster Autoscaler  (CA)是一个独立程序,是用来弹性伸缩kubernetes集群的。在使用kubernetes集群经常问到的一个问题是,应该保持多大的节点规模来满足应用需求呢?cluster-autoscaler  出现解决了这个问题,它可以自动根据部署应用所请求资源量来动态的伸缩集群。

  • 项目地址:https://github.com/kubernetes/autoscaler

Cluster Autoscaler 什么时候伸缩集群?

在以下情况下,集群自动扩容或者缩放:

  • 扩容:由于资源不足,某些Pod无法在任何当前节点上进行调度

  • 缩容: Node节点资源利用率较低时,且此node节点上存在的pod都能被重新调度到其他node节点上运行

什么时候集群节点不会被 CA 删除?

  • 节点上有pod被 PodDisruptionBudget 控制器限制。

  • 节点上有命名空间是 kube-system 的pods。

  • 节点上的pod不是被控制器创建,例如不是被deployment, replica set, job, stateful set创建。

  • 节点上有pod使用了本地存储

  • 节点上pod驱逐后无处可去,即没有其他node能调度这个pod

  • 节点有注解:"cluster-autoscaler.kubernetes.io/scale-down-disabled": "true"(在CA  1.0.3或更高版本中受支持)

Horizontal Pod Autoscaler 如何与 Cluster Autoscaler 一起使用?

Horizontal Pod  Autoscaler  会根据当前CPU负载更改部署或副本集的副本数。如果负载增加,则HPA将创建新的副本,集群中可能有足够的空间,也可能没有足够的空间。如果没有足够的资源,CA将尝试启动一些节点,以便HPA创建的Pod可以运行。如果负载减少,则HPA将停止某些副本。结果,某些节点可能变得利用率过低或完全为空,然后CA将终止这些不需要的节点。

如何防止节点被CA删除?

从CA 1.0开始,节点可以打上以下标签:

"cluster-autoscaler.kubernetes.io/scale-down-disabled": "true"

可以使用 kubectl 将其添加到节点(或从节点删除):

$ kubectl annotate nodecluster-autoscaler.kubernetes.io/scale-down-disabled=true

运行Cluster Autoscaler  最佳实践?

  • 不要直接修改属于自动伸缩节点组的节点。同一节点组中的所有节点应该具有相同的容量、标签和在其上运行的系统pod

  • Pod 声明 requests 资源限制

  • 使用 PodDisruptionBudgets 可以防止突然删除Pod(如果需要)

  • 再为节点池指定最小/最大设置之前,请检查您的云提供商的配额是否足够大

  • 不要运行任何其他节点组自动缩放器(尤其是来自您的云提供商的自动缩放器)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI