131 lines
3.9 KiB
Markdown
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.
|
|
|
|
---
|