我正在尝试(学习(找出在k8s节点上使用CPU(和RAM(的最佳方式。我的最终目标是确保集群中每个节点的CPU利用率高于X%
到目前为止,我已经读过关于集群自动缩放器和HPA的文章,但不确定它们是否对我的用例有帮助。
据我所知:
cluster-autoscaler
用于根据复制副本计数和resources.request
与目标ec2实例上可用CPU之间的比较来自动缩放节点,而不是基于流量/实际CPU使用情况HPA
基于CPU/实际CPU使用情况,但适用于单个pod
我本质上想达到kubectl top nodes
将显示所有节点都在使用>X%(假设60%(-理想情况下,如果我们达到X2%(假设80%(,则触发自动缩放
关于如何处理这个用例,有什么建议/指针吗?(或者我应该以某种方式使用这两种自动缩放机制的组合(
您可以组合HPA或/和Cluster自动缩放器和/或云提供商的自动缩放组。
-
HPA基于吊舱的CPU/Memory,并放大和缩小K8部署。
-
云提供商ASG或自动缩放组。使用基于虚拟机或实例,您可以根据它们自己的CPU和内存指标进行放大和缩小。
-
群集自动缩放器。当pod挂起且无处运行时,它会起作用,但如果您正在处理上述情况,这更像是一种安全的失败机制,或者可能适用于不需要很快启动的工作负载。
总之,你可以使用以上三种(或更少(,但你必须看看什么对你有用,这样它们就不会相互冲突。一个潜在的问题是,当你的云ASG开始缩小规模时,你的pod也处于挂起状态,那么你的集群自动缩放器(如果你启用了它(就会启动,你可能会让他们都试图做相反的事情,导致你的集群无法调度任何pod。
✌️☮️