编程语言
首页 > 编程语言> > k8s 中Java docker 容器被kill,日志仅仅出现Killed

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

 

标签:容器,Java,kill,内存,日志,k8s,Killed,swap
来源: https://www.cnblogs.com/FlyAway2013/p/15554416.html