阅读提示:本文共计约856个文字,预计阅读时间需要大约2分钟,由作者windows7重装系统编辑整理创作于2023年11月05日23时33分32秒。

判断 Kubernetes (k8s) 的 OOMKilled 的原因,我们可以通过以下几个方面来进行分析:

  1. 检查 Pod 的内存使用情况:如果 Pod 的实际使用内存超过了 Node 的实际内存,那么很可能是因为 Node 的内存不足而导致 Pod 被 kill。这种情况下,Pod 中的进程可能会收到 SIGSEGV 信号,表示无效的内存引用,对应的 Exit Code 为 139。

  2. 检查 Pod 的资源限制设置:如果 Pod 中的 limit 资源设置较小,而实际使用内存超过了这个限制,那么可能是因为 Pod 本身的内存申请超过了 limit 声明的限制而导致被 kill。这种情况下,Pod 中的进程可能会收到 SIGKILL 信号,表示进程被杀掉,对应的 Exit Code 为 143。

    如何判断 k8s 的 OOMKilled 是因为 node 内存不足从而 kill pod,还是因为 pod 本身申请的内存超过了 limt 声明限制而被kill呢?
  3. 检查 Pod 的调度策略:为了避免 Pod 在调度层面出现不均匀的情况,可以设置合理的 request 防止在调度层面的不均匀,或者使用 TKE 的 DynamicScheduler、DeScheduler 插件优化调度策略,让 kube-scheduler 按照真实负载进行调度。

点赞(12) 打赏

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部