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í:
- Unix
top
ykubectl top
son diferentes:
Unix
top
usosproc
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 okubectl top node NODE_NAME
: Mostrar métricas para un nodo dado.
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.
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.
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 - Unix
-
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