Los pods sin límites pueden consumir recursos del nodo y degradar servicios críticos dentro de un clúster. En Kubernetes, definir correctamente requests y limits ayuda a reducir este riesgo y a evitar que una carga de trabajo afecte a otras aplicaciones que comparten la misma infraestructura.
Esta guía propone una implementación base con enfoque conservador: cambios verificables, comandos claros, advertencias antes de acciones sensibles y una validación final para detectar errores antes de mover tráfico o datos reales.
Qué vas a construir
Vas a preparar una configuración base de recursos para Kubernetes que podrás adaptar a un Cloud Server de DonWeb Cloud, a una instancia Linux propia o a un entorno de laboratorio.
El resultado esperado es una configuración documentada, con comandos de prueba y recomendaciones para pasar de laboratorio a producción.
Cuándo conviene usarlo
Este enfoque es útil cuando:
- Necesitas una solución operativa y repetible, no solo una explicación conceptual.
- El servicio va a vivir en un servidor cloud y requiere seguridad básica desde el primer despliegue.
- Necesitas dejar evidencia de configuración, pruebas y criterios de mantenimiento.
- Quieres reducir configuraciones manuales difíciles de auditar.
- Buscas limitar el impacto de pods que podrían consumir demasiada CPU o memoria.
Requisitos previos
Antes de comenzar, asegúrate de contar con:
- Un Cloud Server o servidor Ubuntu/Debian actualizado.
- Un usuario con permisos
sudoo rol equivalente. - Acceso SSH o consola segura.
- Backup previo si el servidor ya tiene datos o tráfico real.
- Dominio o subdominio si el artículo publica un servicio web.
- Credenciales con mínimo privilegio si se usan comandos AWS.
- Ventana de mantenimiento para cambios de red, firewall, runtime, base de datos o credenciales.
Flujo de trabajo recomendado
El flujo recomendado es:
- Preparar el entorno.
- Instalar o activar los componentes necesarios.
- Configurar los recursos de CPU y memoria.
- Probar el comportamiento.
- Reforzar seguridad y dejar criterios de mantenimiento.
Evita cambiar varias capas a la vez. Si algo falla, una modificación incremental es más fácil de revisar y revertir.
Comandos principales
Durante el procedimiento vas a usar comandos como los siguientes:
kubectl top nodeskubectl apply -f resources.yamlkubectl describe pod api -n appskubectl get resourcequota -n appskubectl rollout restart deploy/api -n appsConfiguración base de recursos
El siguiente bloque muestra una configuración base para definir requests y limits de CPU y memoria:
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512MiEn este ejemplo, el pod solicita una cantidad mínima de recursos para poder programarse en un nodo y, al mismo tiempo, queda limitado para no superar ciertos valores máximos de consumo.
Paso 1: Preparar el servidor o entorno
Antes de ejecutar cualquier comando, revisa que estés en el servidor correcto y que tengas una ventana de mantenimiento si el servicio ya recibe tráfico.
Para comenzar, consulta el estado de los nodos:
kubectl top nodesVerifica la salida antes de continuar. Si el comando forma parte de un cambio que modifica red, credenciales, firewall, base de datos o runtime de contenedores, toma una copia de seguridad y conserva una ruta de rollback.
Paso 2: Aplicar la configuración de recursos
Una vez preparada la configuración, aplica el manifiesto correspondiente:
kubectl apply -f resources.yamlRevisa la salida del comando y confirma que el recurso se haya aplicado correctamente. Si estás trabajando sobre un entorno con tráfico real, valida el impacto antes de continuar.
Paso 3: Configurar requests y limits
Dentro del manifiesto, define los recursos del contenedor con una estructura como esta:
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512MiEsta configuración permite declarar una base mínima de recursos y un máximo permitido para el contenedor. Antes de aplicarla en producción, ajusta los valores al comportamiento real de la aplicación.
Paso 4: Probar que la configuración funciona
Después de aplicar los manifiestos, revisa los recursos del namespace:
kubectl get resourcequota -n appsTambién puedes inspeccionar el pod para confirmar su configuración:
kubectl describe pod api -n appsVerifica la salida antes de continuar. Si detectas un comportamiento inesperado, revisa el manifiesto aplicado, el namespace y el contexto activo de Kubernetes.
Paso 5: Reiniciar el despliegue y dejar mantenimiento
Si necesitas que el despliegue tome la nueva configuración, puedes reiniciarlo:
kubectl rollout restart deploy/api -n appsAntes de ejecutar este paso, confirma que estás trabajando en el namespace correcto y que el servicio puede tolerar el reinicio. Luego revisa el estado del despliegue y conserva evidencia de la configuración aplicada.
Problemas frecuentes
Permisos insuficientes
Revisa el usuario, el grupo, el rol IAM o el contexto de Kubernetes antes de repetir comandos con más privilegios.
Puerto ocupado o cerrado
Valida con ss -tulpn, reglas de firewall y security groups antes de asumir que la aplicación falló.
Variables de entorno ausentes
Confirma .env, secretos del orquestador y que no se impriman credenciales en logs.
El servicio inicia, pero no responde
Revisa healthchecks, logs, dependencia de base de datos y resolución DNS.
Rollback no definido
Conserva la versión anterior, snapshot, backup o manifiesto previo antes de aplicar cambios sensibles.
Buenas prácticas para producción
Para llevar esta configuración a un entorno productivo, considera estas prácticas:
- Usa mínimo privilegio para usuarios, roles, contenedores y reglas de red.
- Versiona configuraciones sin incluir secretos.
- Prueba restauraciones de backup, no solo la creación del archivo.
- Activa logs y alertas antes de necesitar diagnosticar un incidente.
- Documenta quién puede ejecutar cambios y qué evidencia debe quedar.
- Revisa periódicamente dependencias, imágenes y paquetes del sistema.
Advertencias de seguridad
No ejecutes estos pasos contra infraestructura de terceros ni contra producción sin autorización.
Los comandos y recomendaciones de seguridad están orientados a defensa, mitigación y auditoría autorizada. Si detectas credenciales expuestas, rota primero y luego investiga el alcance.
Estado técnico
- Probado en entorno aislado: no.
- Validado contra documentación oficial: sí.
- Pendiente de validación: ejecutar el procedimiento completo en un servidor de laboratorio antes de publicarlo como probado.
