一千萬個為什麽

搜索

具有4cpu的kubernetes集群節點無法容納帶有2cpu的兩個pod



我在GCE上有一個Kubernetes集群(Google Cloud Engine)(也稱為GKE - Google Kubernetes Engine)。

群集配置為每個節點 4cpu 。我使用的pod請求 2cpu 。我希望每個節點能夠 2個pod 。但是每次我啟動一個新的pod時,它也會提供一個新節點(僅 每個節點 1個pod )。

發生了什麽,我怎樣才能更有效地利用我的資源? (我不想為未充分利用的節點付費)

節點:

機器類型
  n1-highcpu-4(4個vCPU,3.6 GB內存)

Pod(Yaml):

resources:
  limits:
    cpu: "2"
    memory: 1000Mi
  requests:
    cpu: "2"
    memory: 1000Mi

修改</強>

如下面評論中所述;似乎有一些'默認'pod在節點上運行,它使用少量的CPU。對我來說,有兩個服務艙每個占用100mcpu。此外,在查看我的節點資源時,無論這些小吊艙是什麽,似乎都有一個小的開銷我看到:

Resource type   Capacity   Allocatable   
CPU             4 CPU      3.92 CPU

這意味著我的群集中的每個節點只有3.72 CPU,我可以分配到我的pod。 (3.92可分配, - 每個服務容器100m CPU(x2)= 3.72)

Knowing this, I can understand why my desired deployment will not work.

但是,現在這提出了新的問題;如何最有效地分配需要2cpu的pod。由於GCE只允許我提供偶數個cpu(2,4,6等)的節點,因此我總是會浪費2個CPU。有更好的解決方案嗎?

EDIT2:</強>

設置我的pod使用1.8 CPU允許我為每個節點部署2個pod。 (現在已經足夠了) 期望能夠預測節點上的開銷。例如,在我上面的用例中,為每個節點分配4CPU,我應該能夠提前知道在考慮服務pod和可分配CPU之後我將只能使用3.72作為我自己的pod。但是如果我現在想要配置一個帶有8CPU的新節點,我將需要再次檢查這些數字。

轉載註明原文: 具有4cpu的kubernetes集群節點無法容納帶有2cpu的兩個pod

一共有 1 個回答:

看起來你找到了你的答案,但是讓我添加一點顏色,因為我們經歷了同樣的事情。

您對pod的yaml可以同時具有CPU和內存的請求和限制。既然你在這裏討論CPU,我會堅持下去。為了有效利用資源,您可以執行的操作是將資源請求設置為最低要求以進行計劃。說1.8。但也將限制設置為更高的限制,例如2或更多。這將使您的pod可以在計算機上進行調度,如果CPU沒有完全耗盡,您的pod將使用最多2個可用CPU或您設置的限制。這是kubernetes通過將CPU“共享”到需要它的應用程序來充分利用資源的方式。

See here for requests and limits: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/