我正在尝试(学习)找出在k8个节点上利用CPU(和RAM)的最佳方法。 我的最终目标是确保群集中每个节点上的CPU利用率都高于X%
到目前为止,我已经了解了cluster-autoscaler和HPA,但不确定它们是否可以帮助我解决用例。
根据我所读的内容:
cluster-autoscaler
用于基于副本计数与目标ec2实例上的resources.request
与可用CPU VS的比较来自动缩放节点-这不是基于流量/实际CPU使用情况HPA
基于CPU /实际cpu使用情况,但适用于单个Pod 我基本上想说一个kubectl top nodes
会显示所有节点都使用> X%(比如说60%)的情况-理想情况下,如果我们达到X2%(比如说80%),就会触发自动缩放。
有关如何使用此用例的任何建议/指针? (或者我应该以某种方式结合使用这两种自动缩放机制)
答案 0 :(得分:1)
您可以结合使用HPA或/和集群自动缩放器和/或云提供商的自动缩放组。
基于Pod的CPU /内存的HPA,例如,按比例缩放K8s部署。
云提供商ASG或自动扩展组。使用基于VM或实例的虚拟机或实例,您可以根据它们自己的CPU和内存指标进行扩展和缩小。
集群自动缩放器。当Pod挂起且无处可运行时,它可以工作,但是,如果您正在处理上述情况,则这更像是一种安全的故障机制,或者对于不需要非常快地处理的工作负载而言。
总而言之,您可以使用以上(或更少)的全部3种方法,但必须查看对您有用的方法,以使它们不会相互冲突。一个潜在的问题是,当您的云ASG开始按比例缩小时,您还具有处于挂起状态的Pod,那么群集自动缩放器(如果已启用)将启动,并且您可能都试图使它们自动执行相反的操作,从而导致群集只是无法安排任何广告连播。
✌️☮️