我應該從哪裡開始解決高平均負載問題?

我應該從哪裡開始解決高平均負載問題?

我有一個運行 4 個工作節點的 kubernetes 叢集(Ubuntu 20.04,有 4 個 CPU),我發現所有節點的平均負載都很高。這是其中一個節點上的 top 結果: 頂部

我不確定這是否符合預期,因為節點正在運行 111 個容器。是否還有其他原因導致平均負載較高,或者只是因為容器太多而我只需要更多資源?

答案1

平均負載是運行或等待運行的程式的計數。

Top 很好,但只提供了一半的資訊——CPU 中正在運行或等待運行的東西。另一半是等待磁碟 I/O 完成的事情。

對於磁碟 I/O,atop很好,點擊d即可顯示進程的磁碟使用情況。 (您通常需要以 root 身份運行它才能得到它。)

答案2

典型的經驗法則是,您不希望平均負載超過主機上的核心數量。這是理想的情況。超越這一點並不總是一個問題。根據我的經驗,平均負載並不總是問題的指標。如果您的負載較高、系統 cpu 使用率較高或 iowait 較高,那麼您的情況可能很糟糕。

對於 kubernetes,我經常聽到的一件事是你需要設定資源限制。如果沒有限制,那麼每個 pod 都可以完全存取節點。在我看來,正確調整應用程式的大小並不簡單。尤其是當每個人似乎都試圖將非雲端原生應用程式扔進 k8s 時。

建議您減少工作負載、增加更多工作人員(橫向擴展)或為節點添加更多資源(縱向擴展),或組合使用。

相關內容