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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM