3.9 KiB
3.9 KiB
Comprobaciones y diagnóstico habitual
1. Estado de nodos, pods y despliegues
kubectl get nodes -o wide # Estado y detalles de los nodos
kubectl describe node <nombre-nodo> # Info detallada, condiciones, taints, eventos
kubectl get pods -A # Todos los pods de todos los namespaces
kubectl get pods -n traefik # Sólo los pods de Traefik
kubectl get pods -n cert-manager # Sólo cert-manager
kubectl get deployments -A # Todos los deployments
kubectl get events -A | tail -20 # Últimos eventos del clúster (errores recientes)
Todos los pods deben estar en estado Running o Completed. Si alguno está en CrashLoopBackOff o Error, inspecciona con:
kubectl describe pod <nombre-pod> -n <namespace>
kubectl logs <nombre-pod> -n <namespace>
kubectl logs -f <nombre-pod> -n <namespace> # Logs en streaming (útil en troubleshooting)
2. Estado del control-plane y componentes críticos
kubectl get pods -n kube-system -o wide # Componentes internos: etcd, coredns, apiserver, controller, etc.
kubectl logs -n kube-system <nombre-pod> # Logs de cualquier pod de kube-system
3. Servicios, IPs y estado MetalLB
kubectl get svc -A # Todos los servicios, revisa columna EXTERNAL-IP
kubectl get svc -n traefik # Servicio LoadBalancer de Traefik debe tener IP de MetalLB
kubectl describe svc <nombre-svc> -n <ns> # Ver detalles de servicio, endpoints, ports, etc.
4. Certificados, secrets y recursos cert-manager
kubectl get secrets -n traefik # Verifica el Secret TLS (ej: wildcard-cert)
kubectl describe secret wildcard-cert -n traefik
kubectl get certificate -A # (cert-manager) lista los recursos Certificate gestionados
kubectl describe certificate <name> -n <ns> # Ver detalle y posibles errores
kubectl get clusterissuer,issuer -A # Ver emisores de cert-manager (staging, prod, etc.)
kubectl describe clusterissuer <name> # Detalles y eventos del issuer global
5. Ingress, dominios y rutas
kubectl get ingress -A
kubectl describe ingress <name> -n <ns>
Revisa que los hosts, paths y el campo secretName están correctos.
6. Comprobar acceso SSL/TLS desde fuera
openssl s_client -connect <IP_MetalLB>:443 -servername app1.miempresa.com
Verifica el certificado servido y el SNI.
7. Comandos útiles para trabajar con NAD (NetworkAttachmentDefinition)
a) Ver todos los NAD existentes
kubectl get network-attachment-definitions --all-namespaces
# o, más corto
kubectl get nad -A
b) Ver el YAML de un NAD concreto
kubectl get network-attachment-definition <NOMBRE_NAD> -o yaml
# o
kubectl -n <NAMESPACE> get nad <NOMBRE_NAD> -o yaml
c) Borrar un NAD
kubectl delete network-attachment-definition <NOMBRE_NAD>
# o
kubectl -n <NAMESPACE> delete nad <NOMBRE_NAD>
d) Editar un NAD en caliente
kubectl edit network-attachment-definition <NOMBRE_NAD>
# o
kubectl -n <NAMESPACE> edit nad <NOMBRE_NAD>
8. Comprobaciones útiles entre pasos
-
Tras instalar Traefik y MetalLB:
- Comprueba que el servicio Traefik tiene una IP del pool y responde en el puerto 80/443.
-
Tras instalar cert-manager y crear issuers:
- Haz
kubectl get pods -n cert-managery revisa los logs si algún pod falla.
- Haz
-
Tras crear un Secret TLS:
- Haz
kubectl describe secret <nombre> -n <namespace>y asegúrate de que el tipo eskubernetes.io/tls.
- Haz
-
Tras crear Ingress:
- Comprueba con
kubectl get ingress -Ay revisa que los hosts y secrets estén bien referenciados.
- Comprueba con
-
Si accedes por navegador y hay error SSL:
- Usa
openssl s_clientpara ver qué certificado se está presentando realmente.
- Usa