前提就是前一篇得內容,**Prometheus
**開始用了PV、PVC
文章連結:https://ithelp.ithome.com.tw/articles/10221268
緊接著昨日晚上,prometheus pod
異常了,以為小問題,刪除了prometheus pod
期許它自行恢復,但...無情的是"沒有恢復"。
Prometheus log 顯示
component=tsdb \
msg="last page of the wal is torn, filling it with zeros" \
segment=/prometheus/wal/00000012
按照上述 log 特徵去查詢網路資訊,輾轉查到這幾篇:
https://github.com/prometheus/prometheus/issues/3632
https://github.com/prometheus/tsdb/issues/590
https://github.com/prometheus/tsdb/pull/623
得知在v.2.11.0-rc.0
版本中獲得WAL
問題的解決,於是....
當時我使用的版本是v2.10.0
,更新前去瀏覽 Prometheus github 網站查看目前版本進展,於是我選擇了v2.12.0
版本。
緊接著趕緊去更新,驗證問題是否真的解決。
更新之後,於是看見了新問題...嗎?
level=error ts=2019-09-26T15:58:39.427Z caller=endpoints.go:131 component="discovery manager scrape" discovery=k8s role=endpoint msg="endpoints informer unable to sync cache"
level=error ts=2019-09-26T15:58:39.427Z caller=pod.go:85 component="discovery manager scrape" discovery=k8s role=pod msg="pod informer unable to sync cache"
level=error ts=2019-09-26T15:58:39.427Z caller=endpoints.go:131 component="discovery manager scrape" discovery=k8s role=endpoint msg="endpoints informer unable to sync cache"
Prometheus
仍然無法正常啟動,無解......
即使使用v2.11.2
版本,情況相同。
於是我想到,當Prometheus pod
啟動時,會去讀取PV
裡頭的數據資料,於是我選擇了捨棄PVC、PV
掛載使用。
Prometheus pod
重新更新後,迅速恢復了~~~
不死心,再重新將PVC、PV
掛載回來,果然Prometheus
無法正常運作,總是讀取了眾多WAL
資訊後就停擺了。
於是我做了個動作:移除PV
,再重新掛載新的PV~
就這樣 "期許" 放著運作數日看看,是否有新問題發生。
但殘酷是,一小時之後,結果prometheus pod
又故障不工作了!
只好先捨棄不採用PV、PVC
磁碟方案了。
發現Prometheus
仍然會異常,都出現在記憶體使用不足的情況
下列是正常Prometheus pod
的記憶體使用情況(下圖綠色線條接近2.4 ~ 2.6GB)。
下列是不正常Prometheus
的記憶體使用情況,一直猛用記憶體(下圖綠色線條接近5GB)。
到今晚的心得是
PV、PVC
磁碟關係,因為其他掛載的Prometheus
仍正常運作中。Prometheus
吃了不少記憶體。回想穩定與不穩定之間的環境差異,就是pod
數量了!
pod
數量超過100,每當我大量操作restart pod
時,Prometheus
會特別明顯的立即故障重啟~Prometheus
中,該環境的pod數量約略40個。目前我為了可以放心放假,先為了Prometheus
準備了資源更充足的K8s node給予使用。
觀察其穩定性狀況為何。
當然另外再花時間,研究Prometheus
的效能與記憶體需求面向。