Kubernetes MySQL pod因内存问题被杀

时间:2018-09-13 20:01:37

标签: kubernetes

在我的Kubernetes 1.11集群中,一个MySQL pod因Out of memory问题而被杀死:

> kernel: Out of memory: Kill process 8514 (mysqld) score 1011 or
> sacrifice child kernel: Killed process 8514 (mysqld)
> total-vm:2019624kB, anon-rss:392216kB, file-rss:0kB, shmem-rss:0kB
> kernel: java invoked oom-killer: gfp_mask=0x201da, order=0,
> oom_score_adj=828 kernel: java
> cpuset=dab20a22eebc2a23577c05d07fcb90116a4afa789050eb91f0b8c2747267d18e
> mems_allowed=0 kernel: CPU: 1 PID: 28667 Comm: java Kdump: loaded Not
> tainted 3.10.0-862.3.3.el7.x86_64 #1 kernel

我的问题:

  1. 如何防止我的吊舱被OOM杀死?我需要启用部署设置吗?
  2. 当该节点上没有足够的可用内存时,如何配置以防止在节点上调度新Pod?
  3. 我们禁用了交换空间。我们是否需要在主机级别上禁用内存过量使用设置,将/proc/sys/vm/overcommit_memory设置为0

谢谢 SR

1 个答案:

答案 0 :(得分:3)

定义Pod清单时,最好的做法是为CPU和内存使用resourceslimits定义requests节:

resources:
    limits:
      cpu: "1"
      memory: 512Mi
    requests:
      cpu: 500m
      memory: 256Mi

此定义可帮助调度程序识别三个服务质量(QoS)类别:

  • 保证

  • 可爆

  • 尽力而为

和最后一个类别中的豆荚最消耗。