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

 

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