2016-09-18 415 views
4

在我們的Kuberenetes集羣中,我們遇到了偶發情況,羣集節點內存不足,Linux調用OOM殺手。查看日誌,看起來調度到節點上的豆莢正在請求比可由節點分配的更多的內存。如何獲取在Kubernetes節點上運行的Pod的歷史記錄?

問題是,當調用OOM殺手時,它會打印出進程列表及其內存使用情況。然而,由於我們所有的Docker容器都是Java服務,因此「進程名稱」僅顯示爲「java」,不允許我們追蹤哪個特定Pod導致問題。

如何獲得哪些Pod預定在特定節點上運行的歷史以及何時?

+2

一種方法是檢查' kubectl獲取事件「並獲得在不同節點上創建/刪除各種豆莢的想法。 –

回答

1

我們使用Prometheus來監控OOM事件。

這種表達應該報告內存使用量已達到了極限次數:

rate(container_memory_failcnt{pod_name!=""}[5m]) > 0 

FYI:這是正確的文檔退而求其次,the code

-1

一種方法是查看docker ps -a輸出並將容器名稱與容器的容器相關聯。

0

我猜你的豆莢沒有requests and limits集,或者這個值不理想。

如果您正確設置此選項,當吊艙開始使用太多內存時,該吊艙將會被殺死,您將能夠找出導致問題的原因。

關於查看節點上的所有窗格,可以在節點上使用kubectl get eventsdocker ps -a,如其他答案/註釋中所引用的那樣。

相關問題