El tiempo de espera del upstream de Nginx expiró (110: Tiempo de espera de conexión agotado) al conectarse al upstream al conectarse a Kubernetes Ingress.
Obtengo un tiempo de conexión agotado al hacer un proxy inverso de nginx a kubernetes ingress. No entiendo qué está mal aquí.
Ejecutando minikube –driver=docker
2021/12/21 23:52:25
7#7: *6 tiempo agotado al conectarse con el upstream (110: tiempo de conexión agotado) mientras se conectaba al upstream, cliente: 10.227.224.11, servidor: , solicitud: “GET / HTTP/1.1”, upstream: “http://192.168.49.2:80/”, host: “10.105.230.34:8089”-bash-4.2$ kubectl get ingress
NOMBRE CLASE HOSTS DIRECCIÓN PUERTOS EDAD
ingress-service <ninguno> * 192.168.49.2 80 12h
-bash-4.2$
Pero cuando hago un curl, obtengo la respuesta. Además, curl solo funciona cuando exporto no_proxy=$no_proxy,$(minikube ip)
.
bash-4.2$ curl http://192.168.49.2:80/
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link
Configuración de nginx:
server {
listen 80;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://192.168.49.2/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_buffering off;
proxy_cache off;
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_request_buffering off;
}
}
Definición de Ingress:
apiVersion: networking.k8s.io/v1
# ACTUALIZAR API
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: 'nginx'
#nginx.ingress.kubernetes.io/use-regex: 'true'
# AGREGAR ANOTACIÓN
#nginx.ingress.kubernetes.io/rewrite-target: /$1
# ACTUALIZAR ANOTACIÓN
Cualquier indicio de cómo depurar esto.
Actualización:
cuando uso el reenvío de puertos como se muestra a continuación, puedo acceder a la aplicación.
sudo firewall-cmd --add-forward-port=port=8089:proto=tcp:toport=80:toaddr=192.168.49.2
davy.ai
Parece que puede haber un problema con el servidor upstream que agota el tiempo de espera al conectarse a través del proxy inverso nginx. Esto podría ser debido a problemas con la configuración de la red, la configuración del proxy inverso nginx o el controlador de ingreso de Kubernetes.
Para depurar esto, aquí hay algunos pasos que puedes seguir:
kubectl exec
para probar la conectividad entre las cápsulas.Verifica la configuración de nginx: Revisa el archivo de configuración de nginx para asegurarte de que esté correctamente configurado y enrutando el tráfico hacia el servidor upstream correcto.
Verifica el controlador de ingreso de Kubernetes: Asegúrate de que el controlador de ingreso de Kubernetes se esté ejecutando correctamente y que el recurso de ingreso esté definido correctamente.
Habilita la depuración: Habilita la depuración en el proxy inverso nginx y en el controlador de ingreso de Kubernetes para obtener más información sobre los errores.
Prueba diferentes configuraciones: Experimenta con diferentes configuraciones para el proxy inverso nginx y el controlador de ingreso de Kubernetes para ver si eso resuelve el problema.
Verifica los registros: Observa los registros del proxy inverso nginx y el controlador de ingreso de Kubernetes para ver si hay alguna información útil que pueda ayudar a diagnosticar el problema.
En este caso específico, parece que el comando curl funciona con una variable de entorno específica, por lo que verificar las variables de entorno y la configuración de la red podría ser útil para resolver el problema. Además, el uso del reenvío de puertos como solución alternativa sugiere un posible problema con la configuración de la red que debe investigarse.