Kubernetes - ¿Cómo calcular los recursos que necesitamos para cada contenedor?

¿Cómo averiguar cuánto recursos min y max para asignar para cada implementación de la aplicación? Estoy preparando un clúster y no tengo recursos y dejar que funcione libremente.

Supongo que podría usar top command para averiguar la carga durante el tiempo máximo y trabajar en eso pero todavía superior dice como 6% o 10% pero entonces no estoy seguro de cómo calcularlos para producir algo como 0.5 cpu o 100 MB. ¿Hay un método/formula para determinar max y min basado en top command ¿Uso?

Tengo dos nodos t3.medium y tengo las siguientes cápsulas httpd and tomcat in namespace1, mysql in namepsace2, jenkins and gitlab in namespace3. ¿Hay alguna guía para los recursos mínimos que necesita? o ¿Tengo que encontrarlo basado en la parte superior o en algún otro método?

Pregunta hecha hace 3 años, 5 meses, 6 días - Por scriptsorcerer4f7e


3 Respuestas:

  • Hay pocas cosas que discutir aquí:

    1. Unix top y kubectl top son diferentes:
    • Unix top usos proc sistema de archivos virtual y lee /proc/meminfo archivo para obtener una información real sobre el uso actual de la memoria.

    • kubectl top muestra información métrica basada en informes de cAdvisor, que recoge el uso de los recursos. Por ejemplo: kubectl top pod POD_NAME --containers: Mostrar métricas para una cápsula dada y sus contenedores o kubectl top node NODE_NAME: Mostrar métricas para un nodo dado.

    1. Puedes usar el metrics-servidor para obtener la CPU y el uso de memoria de las cápsulas. Con él podrás Assign CPU Recursos para contenedores y Pods.

    2. Optimally, tus pods deberían estar usando exactamente la cantidad de recursos que pediste, pero eso es casi imposible de conseguir. Si el uso es inferior a su solicitud, usted está perdiendo recursos. Si es más alto, usted está arriesgando problemas de rendimiento. Considere un 25% de margen arriba y abajo el valor de solicitud como un buen punto de partida. En cuanto a los límites, lograr un buen ajuste dependería de intentar y ajustar. No hay un valor óptimo que encajaría con todos como depende de muchos factores relacionados con la aplicación misma, la modelo de demanda, la tolerancia a errores, etc.

    3. Como suplemento recomiendo pasar por Management Resources for Containers docs.

    Respondida el Dec 16, 2020 a las 09:12 - por debugdynamob312

    Votos positivos: 0 | Votos negativos: 0

  • Para determinar cuántos recursos asignar a cada contenedor en Kubernetes, es importante entender el uso de recursos como CPU y memoria por parte de cada aplicación. Aquí hay algunos pasos que puedes seguir para calcular los recursos necesarios:

    • Monitorear el uso de recursos con `top`: Puedes utilizar comandos como `top` o `kubectl top` para monitorear el uso de recursos de tus contenedores. Estos comandos te darán una idea de cuánta CPU y memoria está consumiendo cada contenedor en un momento dado.
    • Determinar requerimientos de recursos de las aplicaciones: Debes revisar la documentación de cada aplicación para conocer sus requerimientos de CPU y memoria. Por ejemplo, la documentación de Apache HTTP Server (`httpd`) y Apache Tomcat (`tomcat`) puede proporcionarte una idea de cuántos recursos necesitan para funcionar correctamente en un entorno de producción.
    • Realizar pruebas de carga y estrés: Puedes realizar pruebas de carga y estrés en tus aplicaciones para ver cómo responden en diferentes situaciones. Esto te ayudará a determinar los recursos máximos que podrían necesitar en momentos de alta demanda.
    • Establecer límites y solicitudes de recursos en los manifiestos de Kubernetes: Una vez que hayas determinado los requerimientos de recursos de tus aplicaciones, puedes establecer límites y solicitudes de recursos en los manifiestos de Kubernetes. Esto ayuda a Kubernetes a asignar los recursos necesarios y a garantizar un rendimiento predecible de tus aplicaciones.

    En cuanto a los recursos mínimos necesarios para tu clúster con los nodos t3.medium y las diferentes cápsulas que mencionaste, es recomendable comenzar con recursos modestos y ajustarlos según sea necesario. Puedes comenzar asignando una cantidad mínima de CPU y memoria a cada contenedor y luego monitorear su rendimiento para realizar ajustes si es necesario.

    En resumen, la mejor manera de determinar cuántos recursos asignar a cada contenedor en Kubernetes es monitorear el uso de recursos, conocer los requerimientos de las aplicaciones y realizar pruebas de carga. Ajusta los recursos asignados según sea necesario para garantizar un buen rendimiento de tus aplicaciones.

    Respondida el Dec 17, 2020 a las 09:07 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Cómo calcular los recursos de Kubernetes para cada contenedor

    1. Uso de 'top' para estimar el uso de recursos

    Ejecuta top dentro del contenedor en ejecución. Observa los valores de %CPU y %MEM para obtener el uso actual de recursos. Multiplica estos porcentajes por la cantidad total de CPU y memoria disponibles para el nodo para obtener el uso estimado en recursos absolutos. Por ejemplo, si %CPU es del 10 % y el nodo tiene 8 núcleos, el uso estimado de CPU es de 0,8 núcleos.

    2. Determinación de los recursos mínimos y máximos

    Mínimo: El uso de recursos más bajo observado durante un período de carga promedio. Máximo: El uso de recursos más alto observado durante un período de carga máxima.

    Puedes usar el uso estimado de recursos del Paso 1 como un punto de partida y ajustarlo según el comportamiento observado.

    3. Asignación de recursos para pods

    Una vez que hayas determinado los recursos mínimos y máximos, puedes asignarlos a los pods utilizando las solicitudes y límites de recursos:

    Solicitud (requests): Garantiza que el pod recibirá al menos esta cantidad de recursos. Límite (limits): Limita la cantidad máxima de recursos que el pod puede consumir.

    4. Guías de recursos mínimos

    Las guías de recursos mínimos varían según la aplicación. Aquí hay algunos ejemplos aproximados:

    httpd: 0,5 núcleos de CPU, 128 MB de memoria tomcat: 0,5 núcleos de CPU, 512 MB de memoria mysql: 1 núcleo de CPU, 1 GB de memoria jenkins: 1 núcleo de CPU, 512 MB de memoria gitlab: 1 núcleo de CPU, 1 GB de memoria

    Recomendaciones para tus nodos t3.medium

    Con 2 nodos t3.medium (2 2 núcleos de CPU, 2 4 GB de memoria), considera las siguientes asignaciones de recursos:

    | Pod | CPU solicitud | CPU límite | Memoria solicitud | Memoria límite | |---|---|---|---|---| | httpd y tomcat | 0,5 núcleos | 1 núcleo | 128 MB | 256 MB | | mysql | 1 núcleo | 2 núcleos | 1 GB | 2 GB | | jenkins y gitlab | 1 núcleo | 2 núcleos | 512 MB | 1 GB |

    Nota:* Estos son solo estimaciones y es posible que debas ajustar los valores según el comportamiento real de la aplicación. Monitorea el uso de recursos y realiza ajustes según sea necesario.

    Respondida el Dec 17, 2020 a las 09:18 - por Gemini

    Votos positivos: 0 | Votos negativos: 0