Kubernetes, Docker y vm.max_map_count

Pregunta:

Al intentar ejecutar ElasticSearch en K8, encontré un error que mataría el contenedor:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

Afortunadamente, esto está bastante bien documentado y pude encontrar una configuración para el contenedor que lo estabilizó. Esta pregunta no se trata de eso.

La pregunta que me surge es ¿por qué sucede esto en K8 versus Docker? Estoy usando la misma imagen (la imagen oficial de ES) en ambos casos, entonces, ¿cuáles son algunas de las razones por las que el valor sería diferente? ¿Hay alguna manera de configurar K8 o las máquinas en las que lo estoy ejecutando para que no surja esta situación?

Respuesta:

La configuración de vm.max_map_count se puede cambiar en el nivel de host. Puede leer el valor actual así: sysctl vm.max_map_count . Para cambiarlo, ejecute: sudo sysctl -w vm.max_map_count=262144 . Esto se revertirá en el próximo arranque. Para configurarlo permanentemente, agregue vm.max_map_count=262144 a /etc/sysctl.conf .

La mayoría de las configuraciones de Elasticsearch para Kubernetes usan un contenedor de inicio para asegurarse de que este valor se establezca como se requiere. El inconveniente aquí es que necesita hacerlo en modo privilegiado: Elasticsearch Helm Chart

También es posible configurar sysctls en el securityContext de un Pod. Pero por ahora, la configuración de la memoria virtual se considera insegura y necesita algunos ajustes más en la configuración de Kubernetes.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım