java 容器啓動到一半,突然就死掉了,查看日誌,發現“ killed ”
why? 憑感覺是 容器需要的內存超過了 k8s 的限制,被k8s 殺掉了, 但是竟然k8沒有日誌。 好吧,可能是我不會查看k8s 的日誌。
試了兩個方法:
1、內核日誌 /var/log/messagesdmesg打印環形緩衝區的內容。這些信息還會實時發送到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裏面繼續申請內存的進程。
參考:
https://www.jianshu.com/p/a9288b7edfa3
http://www.dockone.io/article/5932
https://blog.csdn.net/u012516914/article/details/109108660