Appearance
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-namespaceRéplicas y escalado automático
Puedes cambiar temporalmente el número de réplicas de un Deployment:
bash
kubectl scale deployment/mi-app --replicas=3Para 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 hpaEl 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: 10Una 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.creationTimestampSi 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.yamlVerifica el namespace y el contexto antes de borrar recursos, especialmente en clústeres compartidos o de producción.