es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Verifica la configuración de la red: Asegúrate de que las cápsulas y los servicios se estén ejecutando correctamente y puedan comunicarse entre sí. Puedes intentar ejecutar comandos kubectl exec para probar la conectividad entre las cápsulas.
    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. 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.

Comments are closed.