Kubernetes 库伯内特斯浪费资源

Kubernetes 库伯内特斯浪费资源,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我有一个kubernetes集群,它部署了一个请求为1000m CPU、限制为1200m CPU的工作负载。节点模板是4-8096,我们从来没有碰到RAM,因为工作负载是计算密集型的 我的问题如图所示,当自动定标器将工作负载扩展到2个pod时,Kubernetes没有在同一节点中安排额外的pod,即使有大量可用资源。(2/3.92). 相反,它必须在一个新节点上调度它。当我们进一步扩大规模时,这是一种浪费,而且对成本不敏感 这是正常的行为还是您可以推荐哪些最佳实践来实现更好的资源利用率 谢谢。

我有一个kubernetes集群,它部署了一个请求为1000m CPU、限制为1200m CPU的工作负载。节点模板是4-8096,我们从来没有碰到RAM,因为工作负载是计算密集型的

我的问题如图所示,当自动定标器将工作负载扩展到2个pod时,Kubernetes没有在同一节点中安排额外的pod,即使有大量可用资源。(2/3.92). 相反,它必须在一个新节点上调度它。当我们进一步扩大规模时,这是一种浪费,而且对成本不敏感

这是正常的行为还是您可以推荐哪些最佳实践来实现更好的资源利用率

谢谢。 诺瓦

更新:

根据Erhard Czving的回答,应用自动缩放配置文件以优化利用率后,额外的pod被安排在同一节点上。所以现在根据总请求数,这是3/3.92~76%。

尝试自动缩放配置文件

根据使用的Kubernetes版本,它应该使利用率远远高于默认配置文件。大约80%的利用率是一个很好的估计

使用gcloud命令应用于群集:

gcloud beta container clusters update example-cluster --autoscaling-profile optimize-utilization

默认情况下,kubernetes将POD调度到空闲最少的节点。我不认为这是资源浪费。我们从单个节点开始,那么为什么autoscaler会首先生成一个空闲节点,而现有节点可以容纳更多的POD?那么,也许您的部署有关联/反关联规则,POD不能在同一个节点上运行。因此,autoscaler必须创建第二个节点并将pod部署到那里。我们有节点选择器,但这个节点工具只安排这个特定的工作负载,但没有其他限制。有一个新的答案,所以我将尝试该选项并查看。现在这种方法已经奏效,但我必须强制将节点池缩小到1,以启动新的节点/吊舱调度。