Procesar discrepancia en el uso de memoria en un contenedor sidecar de Kubernetes

Procesar discrepancia en el uso de memoria en un contenedor sidecar de Kubernetes

Tengo un contenedor sidecar con los siguientes recursos:

resources:
  limits:
    memory: 512Mi
  requests:
    memory: 64Mi

Sin embargo, cuando ejecuto top, veo esto:

  • El enviado y el agente piloto parecen estar usando ~ 363 MB y 61 MB respectivamente.
  • La memoria utilizada en la parte superior es de 54,6 MB.
  • correr free -mda lo siguiente; una respuesta aparentemente no correlacionada
$ free -m
              total        used        free      shared  buff/cache   available
Mem:         385307       47140      315018         292       23148      336021
Swap:             0           0           0

arriba corriendo en un sidecar

¿Qué está pasando exactamente aquí y cuánta memoria consumen esos procesos?

Respuesta1

Ese resultado gratuito y superior muestra aproximadamente 50.000 MiB utilizados, de un host con aproximadamente 385.000 MiB de memoria en total.

Los contenedores comparten un kernel, por lo que las métricas del host generalmente mostrarán números de todo el nodo. Aunque los espacios de nombres solo muestran sus procesos y archivos. Esto es diferente de una máquina virtual dedicada o un host físico, donde el sistema operativo solo existe para admitir su aplicación.

Los números por contenedor requieren consultar los números de cgroups. Vea algunas formas de hacerlo en Stack Overflow:Comprobación de la CPU y la memoria del pod de Kubernetes. Muchos de los cuales requieren un servidor de métricas.

Tenga cuidado al agregar memoria RESidente de procesos y esperar que ese sea el uso exacto de la memoria del sistema. Esto no incluye memoria compartida ni cachés. Y el núcleo hace extraños trucos contables con la memoria. Tus 3 dígitos significativos son la idea correcta. Aunque, en el caso simple de una pequeña cantidad de procesos, que utilizan principalmente memoria privada, es una buena estimación.

información relacionada