Skip to content

Operaciones y escalado ​

kubectl es la herramienta principal para consultar y modificar recursos de Kubernetes. Revisa siempre el contexto y namespace antes de ejecutar cambios:

bash
kubectl config current-context
kubectl get namespaces
kubectl get pods -n mi-namespace

Réplicas y escalado automático ​

Puedes cambiar temporalmente el número de réplicas de un Deployment:

bash
kubectl scale deployment/mi-app --replicas=3

Para escalar según métricas se puede crear un HorizontalPodAutoscaler (HPA). El clúster debe tener una fuente de métricas (habitualmente Metrics Server) y los contenedores deberían definir resources.requests:

bash
kubectl autoscale deployment mi-app --min=2 --max=10 --cpu-percent=70
kubectl get hpa

El porcentaje de CPU se calcula respecto a las solicitudes de CPU. En un entorno gestionado desde manifiestos o GitOps, mantén el escalado automático en la configuración declarativa para evitar que un cambio manual se sobrescriba.

Comprobaciones de salud ​

Las sondas permiten que Kubernetes compruebe el estado de la aplicación:

yaml
startupProbe:
  httpGet:
    path: /health
    port: http
  failureThreshold: 30
  periodSeconds: 10
readinessProbe:
  httpGet:
    path: /health
    port: http
  periodSeconds: 5
livenessProbe:
  httpGet:
    path: /health
    port: http
  periodSeconds: 10

Una startupProbe da tiempo a que la aplicación arranque; readinessProbe controla si el Pod debe recibir tráfico; livenessProbe permite reiniciar un contenedor que no responde correctamente. El endpoint y los umbrales deben corresponder al comportamiento real de la aplicación.

Diagnóstico básico ​

bash
kubectl get pods -o wide
kubectl describe pod <nombre-del-pod>
kubectl logs <nombre-del-pod>
kubectl logs <nombre-del-pod> --previous
kubectl get events --sort-by=.metadata.creationTimestamp

Si un Pod tiene varios contenedores, añade -c <contenedor> a kubectl logs o kubectl exec. --previous muestra los registros de la instancia anterior si el contenedor se reinició.

Estados y problemas comunes:

  • ImagePullBackOff: revisa el nombre y la etiqueta de la imagen, la conectividad al registro y las credenciales de descarga.
  • CrashLoopBackOff: revisa los registros, el comando de inicio, la configuración y las sondas.
  • Pending: revisa eventos, recursos disponibles, restricciones de planificación y PVC sin enlazar.
  • Servicio sin endpoints: confirma que el selector del Service coincide con las etiquetas de los Pods y que están listos.

Limpieza ​

Elimina recursos de prueba aplicados desde un archivo con:

bash
kubectl delete -f deployment.yaml

Verifica el namespace y el contexto antes de borrar recursos, especialmente en clústeres compartidos o de producción.