簡體   English   中英

總 CPU 請求高但總使用率低(kubernetes 資源)

[英]High total CPU request but low total usage (kubernetes resources)

我在集群中有一堆 pod,它們幾乎請求節點上的所有(7.35/8)可用 CPU 資源:

在此處輸入圖像描述

即使它們的實際總使用量幾乎為零(0.34/8)。

當前請求最多的 pod 僅請求 210m,我想這並不是一個離譜的數量——我還想為集群中的所有 pod 強制執行一些合理的最小請求大小。 當然,當有很多 pod 時,它會累積。

看來我可以輕松地將請求縮小 10 倍,並將限制留在開始的地方。

但是在這樣做之前我還應該考慮其他一些事情 - 減少副本數等?

此外,Pod 在節點之間的分布並不均勻,這看起來有點奇怪。

在此處輸入圖像描述

您的請求值似乎被高估了。 您需要時間和指標來為您的工作負載找到正確的請求/限制。

請記住,如果您更改這些值,您的 pod 將重新啟動。

此外,您可以在集群上找到一些不平衡的節點,這很正常。 如果您不詢問,Kubernetes 將永遠不會移除吊艙。

例如,如果您創建一個包含 3 個節點的集群,請用 pod 填充這 3 個節點,然后再添加 3 個節點。 新節點將保持為空。

您可以在集群上設置一些HorizontalPodAutoScaler ,以使您的 pod 數量適應您的工作負載。 這樣做,您的工作負載將分布在節點之間並具有正確的平衡。 (如果您使用默認的調度策略

我建議如下:

  1. 資源分配:根據歷史值將您的請求設置為具有緩沖區的有意義的值。 此外,為了保證 pod 資源分配,將 request 和 limit 設置為相同的值可能是個好主意。 但這意味着您的 pod 不能為新資源爆裂。 還有一點需要注意的是調度只根據請求的值進行,所以如果節點沒有更多的資源,那么如果你的請求試圖突破到限制,那么 pod 將被殺死並重新調度。
  2. 資源配額:檢查 Kubernetes Resource Quotas以獲得合理的命名空間級別配額,以控制開發人員過度配置的資源
  3. Affinity/AntiAffinity:檢查 Anti-affinity 的概念,以便在您的集群中安排您的副本或不同的 pod。 例如,您可以確保一台主機或可用性區域等只能擁有您的 pod 的一個副本(有助於 HA),將不同的 pod 分布到不同的節點(層調度等) - 查看此視頻

已經有很好的答案,但我想添加更多信息。

在計算每個容器需要多少資源時,制定一個好的策略非常重要。 理想情況下,您的 pod 應該使用您請求的資源量,但這幾乎是不可能實現的。 如果使用率低於您的要求,那么您就是在浪費資源。 如果它更高,您將面臨性能問題的風險。 考慮將請求值上下 25% 的余量作為一個好的起點。 關於限制,實現良好的設置將取決於嘗試和調整。 沒有適合每個人的最佳值,因為它取決於與應用程序本身相關的許多因素、需求 model、對錯誤的容忍度等。

Kubernetes 最佳實踐:資源請求和限制是一個很好的指南,通過詳細的解釋和示例來解釋這些機制背后的想法。

此外, Managing Resources for Containers將為您提供有關以下方面的官方文檔:

  • 請求和限制

  • 資源類型

  • Pod 和 Container 的資源請求和限制

  • Kubernetes 中的資源單元

  • 如何調度具有資源請求的 Pod

  • 如何運行具有資源限制的 Pod 等

以防萬一您需要參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM