Kubernetes 触发 OOMKilled(内存杀手)如何排除故障

写在前面


  • 简单整一下 k8s 中 Pod 故障 OOMKilled 的原因以及诊断
  • 博文内容涉及:
  • k8s OOMKilled 分类: 宿主节点行为 / K8s Cgroups 行为
  • 什么是 OOMKilled K8s 错误,OOMKiller 机制如何工作?
  • OOMKilled K8s 错误和解决的常见原因
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


在 K8s 的生产环境中,我们可能会看到 Pod 状态为 OOMKilled 的情况,用通俗的话讲(OOMKilled 即为内存杀手),当前集群给 Pod 所在进程分配的内存用完了,没有可分配的内存,出于集群稳定考虑, k8s 会委托 Cgroups 会把当前 Pod 进程杀掉, 今天和小伙伴分享一些出现 OOMKilled 的原因,以及排故。

有小伙伴可能会问,为什么 CPU 不够不会被 杀掉,内存不够会被杀掉,这是因为 CPU 为可压缩资源,而内存属于不可压缩资源, CPU 不够 cgroups 会对 Pod 中的容器的 CPU 使用进行限流(Throttled). 而内存不够,则会被 Kill 掉.

k8s OOMKilled 分类

这里的K8s

你可能感兴趣的:(kubernetes,容器,云原生)