k8s 中Java docker 容器被kill,日誌僅僅出現Killed

 

java 容器啓動到一半,突然就死掉了,查看日誌,發現“ killed ”

 

 

why? 憑感覺是 容器需要的內存超過了 k8s 的限制,被k8s 殺掉了, 但是竟然k8沒有日誌。 好吧,可能是我不會查看k8s 的日誌。

 

試了兩個方法:

1、內核日誌 /var/log/messages
dmesg打印環形緩衝區的內容。這些信息還會實時發送到syslogd或klogd(在它們運行時),最終以形式發送給/var/log/messages;什麼時候dmesg最有用是捕獲之前syslogd和/或klogd開始的啓動時消息,以便將它們正確記錄。
2、dmesg | grep -i -B100 'killed process'
一旦設置了內存限制,將立即生效,並且當物理內存使用量達到limit的時候,memory.failcnt的內容會加1,但這時進程不一定就會被kill掉,內核會盡量將物理內存中的數據移到swap空間上去,如果實在是沒辦法移動了(設置的limit過小,或者swap空間不足),默認情況下,就會kill掉cgroup裏面繼續申請內存的進程。
 
 
 

 

 

基本找到原因,後面修改yaml, 把內存放大了點,就沒有了這個錯誤!

 


參考:
https://www.jianshu.com/p/a9288b7edfa3

http://www.dockone.io/article/5932

https://blog.csdn.net/u012516914/article/details/109108660

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章