Error. failed to create shim task: OCI runtime create failed: runc create failed
Проблема происходит при использовании SECCOMP и появляется из-за утечки памяти при создании родительского процесса.
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: unable to init seccomp: error loading seccomp filter into kernel: error loading seccomp filter: errno 524: unknown
Корневая проблема - следствием утечек памяти и срабатываний OOM Killer было увеличение числа Zombie-процессов, затем увеличению числа вызовов в BPF, что приводило к большому выделению страниц памяти путем вызова метода vmalloc()
, а также к отбрасыванию всех последующих вызовов к BPF после достижения лимита в опции bpf_jit_enable
. Это приводило к утечкам
памяти в seccomp
и проблемам при создании подов в окружении Kubernetes.
Решение.
1. Можно развернуть DaemonSet с root привилегиями для подов, которые смогут менять значения bpf_jit_limit
.
Однако, у этого решения есть минус. При достижении нового лимита, проблема повторится.
2. Обновить ядро на воркер-нодах до более новой версии, в которых есть патч.
Как указывается в данном обсуждении:
https://github.com/moby/moby/issues/45498#issuecomment-1542155705
Бэкпорт, с удвоением лимита bpf_jit_limit
, для этой ветки был начиная с версии 5.4.240.