¿Cuál es la diferencia entre requests y limits de recursos en Kubernetes?
Opciones
- Requests se reservan para planificar; limits son el máximo permitido (Opción correcta)
- Son el mismo valor, escrito en dos sitios distintos
- Limits son los mínimos y requests son los máximos
- Requests se usan solo para almacenamiento, nunca para CPU o memoria
Respuesta
Requests: la cantidad reservada para planificar (garantizada); limits: el máximo que puede usar un contenedor (superar la memoria lo mata, superar la CPU lo frena)
Por qué
Para cada contenedor puedes fijar CPU y memoria.
requests: lo que reserva el scheduler; Kubernetes coloca el Pod en un nodo con esa cantidad libre.limits: el techo. Si un contenedor supera su límite de memoria, muere (OOMKilled, código de salida 137). Si supera su límite de CPU, se ralentiza (throttling).
Sin requests el scheduler no puede planificar bien; el HPA también usa requests para calcular el porcentaje de CPU.
En la JVM, asegúrate de que el heap quepa dentro del límite de memoria.
resources:
requests: { cpu: "250m", memory: "512Mi" }
limits: { cpu: "1", memory: "1Gi" }Recuerda
Request = garantizado para planificar. Limit = techo estricto.