Cuando desea desplegar una aplicación en Kubernetes, generalmente define tres componentes:
- Un deployment, que es una receta para crear copias de su aplicación llamada Pods
- Un servicio : un balanceador de carga interno que enruta el tráfico a Pods
- Un ingress – una descripción de cómo el tráfico llega desde fuera del clúster para su servicio.

Connecting Deployment and Service
El Servicio y el deployment no están conectados en absoluto.
En cambio, el Servicio apunta a los Pods directamente y omite el deployment por completo.
Entonces, a lo que debe prestar atención es a cómo se relacionan los Pods y el Servicio.
Debes recordar tres cosas:
- El selector del servicio debe coincidir con al menos una etiqueta del Pod
- El Servicio targetPort debe coincidir con el containerPort del contenedor dentro del Pod
- El servicio port puede ser cualquier número.
Varios servicios pueden usar el mismo puerto porque tienen diferentes direcciones IP asignadas
En la práctica, debería mirar estas líneas:

Connecting Service and Ingress
El siguiente paso para exponer su aplicación es configurar el Ingress.
El Ingress tiene que saber cómo recuperar el Servicio para luego recuperar los Pods y enrutar el tráfico hacia ellos.
El Ingress recupera el Servicio correcto por nombre y puerto expuesto.
Deben coincidir dos cosas en Ingress y Service:
- El servicePort del Ingress debe coincidir con el port del Servicio
- El serviceName del Ingress debe coincidir con elname del Servicio

¿Qué pasa cuando algo sale mal?
El Pod no se inicia o se está bloqueando.
3 pasos para solucionar problemas de despliegues de Kubernetes
Es esencial tener un modelo mental bien definido de cómo funciona Kubernetes antes de sumergirse en la depuración de un despliegue fallido.
Dado que hay tres componentes en cada deployment, debe depurarlos todos en orden, comenzando desde abajo:
- Debes asegurarte de que tus Pods estén funcionando
- Concéntrese en hacer que el Servicio enrute el tráfico a los Pods
- Verifique que el Ingress esté configurado correctamente y se conecta al service
- kubectl logs <pod name> es útil para recuperar los registros de los contenedores del Pod
- kubectl describe pod <pod name> es útil para recuperar una lista de eventos asociados con el Pod
- kubectl get pod <pod name> es útil para extraer la definición YAML del Pod tal como está almacenado en Kubernetes
- kubectl exec -ti <pod name> bash es útil para ejecutar un comando interactivo dentro de uno de los contenedores del Pod
Depuración del Ingress Nginx
El proyecto Ingress-nginx tiene un complemento oficial para Kubectl .
Puedes usar kubectl ingress-nginx para:
- inspeccionar registros, backends, certs, etc.
- conectarse a la entrada
- examinar la configuración actual
Los tres comandos que debes probar son:
- kubectl ingress-nginx lint, que comprueba el nginx.conf
- kubectl ingress-nginx backend, para inspeccionar el backend (similar a kubectl describe ingress <ingress-name>)
- kubectl ingress-nginx logs, para verificar los registros
Tenga en cuenta que es posible que deba especificar el espacio de nombres correcto para su controlador Ingress –namespace <name>.





