Quando as aplicações são repetidamente criadas e excluídas em um nó de CentOS com uma versão anterior do kernel, o vazamento do cgroup kmem ocorre ocasionalmente
Sintoma
Em cenários em que a versão do kernel dos nós do CentOS 7.6 é anterior a 3.10.0-1062.12.1.el7.x86_64 (principalmente em clusters da versão 1.17.9), o vazamento de cgroup kmem ocorre quando os aplicativos são criados repetidamente. Como resultado, a memória do nó está livre, mas novos nós não podem ser criados, a mensagem de erro "Cannot allocate memory" é exibida.
Possível causa
Quando uma aplicação é criada repetidamente, um cgroup de memória temporária é criado. No entanto, quando o aplicativo é excluído, o kernel exclui o cgroup (o diretório cgroup correspondente em /sys/fs/cgroup/memory foi excluído), mas o cssid não é liberado no kernel, como resultado, o kernel considera que o número real de Cgroups é inconsistente. Quando o número de Cgroups residuais atinge o limite superior do nó, os pods não podem ser criados no nó.
Solução
- Use o parâmetro cgroup.memory=nokmem globalmente no kernel para desabilitar o kmem para evitar vazamentos.
- Os clusters da v1.17 não são mais mantidos. Para resolver esse problema, atualize o cluster para v1.19 ou posterior e redefina o sistema operacional do nó para a versão mais recente. Verifique se a versão do kernel é posterior a 3.10.0-1062.12.1.el7.x86_64.