Files
kubernetes/comprobaciones.md
2025-08-08 13:09:54 +02:00

131 lines
3.9 KiB
Markdown

# **Comprobaciones y diagnóstico habitual**
## 1. Estado de nodos, pods y despliegues
```bash
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:*
```bash
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
```bash
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
```bash
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
```bash
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
```bash
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
```bash
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
```bash
kubectl get network-attachment-definitions --all-namespaces
# o, más corto
kubectl get nad -A
```
### b) Ver el YAML de un NAD concreto
```bash
kubectl get network-attachment-definition <NOMBRE_NAD> -o yaml
# o
kubectl -n <NAMESPACE> get nad <NOMBRE_NAD> -o yaml
```
### c) Borrar un NAD
```bash
kubectl delete network-attachment-definition <NOMBRE_NAD>
# o
kubectl -n <NAMESPACE> delete nad <NOMBRE_NAD>
```
### d) Editar un NAD en caliente
```bash
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-manager` y revisa los logs si algún pod falla.
* **Tras crear un Secret TLS:**
* Haz `kubectl describe secret <nombre> -n <namespace>` y asegúrate de que el tipo es `kubernetes.io/tls`.
* **Tras crear Ingress:**
* Comprueba con `kubectl get ingress -A` y revisa que los hosts y secrets estén bien referenciados.
* **Si accedes por navegador y hay error SSL:**
* Usa `openssl s_client` para ver qué certificado se está presentando realmente.
---