我们是整个Kubernetes领域的新成员,但到目前为止,GKE中有许多服务正在运行。今天,我们看到了一些奇怪的行为,尽管pod本身具有足够的可用资源,并且没有达到其极限,但其中一个pod内运行的进程之一被杀死了。
限制的定义如下:
resources:
requests:
cpu: 100m
memory: 500Mi
limits:
cpu: 1000m
memory: 1500Mi
在吊舱内部,正在运行Celery(Python),而这一特定任务正在消耗一些运行时间较长的任务。
在执行一项任务期间,芹菜过程突然被杀死,这似乎是由OOM引起的。 GKE群集操作日志显示以下内容:
Memory cgroup out of memory: Kill process 613560 (celery) score 1959 or sacrifice child
Killed process 613560 (celery) total-vm:1764532kB,anon-rss:1481176kB,file-rss:13436kB,shmem-rss:0kB
该时间段的资源图如下所示:
可以清楚地看到,CPU或内存使用率均未接近pod定义的限制,因此我们对为何发生任何OOMKilling感到困惑。进程本身被杀死,而不是实际的pod,也感到困惑吗?
这个特定的OOM是否确实在操作系统内部而不是Kubernetes中发生?如果是这样,是否有解决此特定问题的解决方案?