Scaling Kube State Metrics

Ellie Huxtable

擴展 Kube State Metrics

原文由 Ellie Huxtable 發布,訂閱此部落格

叢集規模變大後,你可能會發現抓取開始變得耗時——kube state metrics 可能會暴露出數百萬個樣本,實際數量取決於你有多少節點、Pod 等資源!

KSM 同時支援自動與手動分片。可惜的是,自動分片目前仍在非常早期的開發階段。

自動分片可讓每個分片在以 StatefulSet 部署時自行發現其標稱位置,這對於自動設定分片很有用。這是一項實驗性功能,可能會在不另行通知的情況下失效或被移除。

所以,我們可以改用手動分片!不過這也不算完美,因為即使有多個 Pod 在抓取同一個資源,它們還是各自需要拉取全部資料。也就是說,原本是一個 Pod 拉取 x 筆資料,現在會變成 n 個 Pod 各自拉取 x 筆資料。換句話說,總網路傳輸量會是 n * x,而不是如果只傳輸該分片所需資料時的 n * x/n。還是不夠理想。

每個分片會自行決定該物件是否由對應的 kube-state-metrics 實例處理。請注意,這代表所有 kube-state-metrics 實例,即使已經分片,仍會為了所有物件(而不只是它們負責的物件)產生網路流量並消耗資源來反序列化物件。

到目前為止,我得出的結論是依資料類型來分片。Pod 往往會暴露最多的樣本,所以優先將它獨立出來是很合理的。因此我們用一個 deployment 來暴露 Pod 相關的指標,另一個則負責其他所有的指標。

看來其他地方也是這麼做的,目前這樣運作還算可行。

本文章由 muse-spark-1.2-contributor 進行翻譯

留言