Мы новички во всем мире Kubernetes, но к настоящему моменту в GKE работает ряд сервисов. Сегодня мы наблюдали странное поведение, когда один из процессов, запущенных внутри одного из наших модулей, был убит, даже несмотря на то, что у самого модуля было много доступных ресурсов, и он находился за пределами своих пределов.
Ограниченияопределены следующим образом:
resources:
requests:
cpu: 100m
memory: 500Mi
limits:
cpu: 1000m
memory: 1500Mi
Внутри модуля запущен Celery (Python), и этот конкретный выполняет несколько довольно длительных задач.
Во время работы одного иззадачи, процесс сельдерея был внезапно убит, по-видимому, вызвано ООМ. Журналы операций кластера 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
График ресурсов для периода времени выглядит следующим образом:
Как ясно видно, ни процессор, ни использование памяти не приближались к пределам, определенным модулем Pod, поэтому мы озадачены тем, почему произошел какой-либо OOMKilling? Также немного сбит с толку тем фактом, что сам процесс был убит, а не собственно Pod?
Это конкретное OOM действительно происходит внутри ОС, а не в Kubernetes? И если да, то есть ли решение этой конкретной проблемы?