k8s ingress no puede llegar al servicio
Instalé ingresos nginx en k8s cluster, sucedió un problema inigualable en la ruta de entrada.
Hay 3 backend de servicio en k8s cluster : 2 servicio nginx un servicio de 1 neo4j.
Mi ingress describe la información sigue :
[root@es3 cafe_ingress]# kubectl describe ingress cafe-ingress
Name: cafe-ingress
Namespace: default
Address: 192.168.59.155
Default backend: default-http-backend:80 ()
TLS:
cafe-secret terminates cafe.example.com
Rules:
Host Path Backends
---- ---- --------
cafe.example.com
/tea tea-svc:80 (10.244.0.25:80,10.244.1.11:80,10.244.2.15:80)
/coffee coffee-svc:80 (10.244.0.24:80,10.244.2.14:80)
/neo4j neo4j-v1-service:7474 (10.244.0.29:7474)
Annotations: Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 22m nginx-ingress-controller Ingress default/cafe-ingress
Normal UPDATE 5s (x3 over 22m) nginx-ingress-controller Ingress default/cafe-ingress
Y, tengo acceso tea
o coffee
servicio , esta entrada en la ruta coffee
o tea
, funciona correctamente, puedo obtener respuesta del servicio tea
o coffee
en el navegador :
Sin embargo, donde el acceso neo4j
, no puedo conseguir respuesta :
De pod nginx-ingress-controller
Mensajes de salida de registro, con 404 código , seguir :
2020-12-17T07:28:10.861510393Z 10.244.0.0 - - [17/Dec/2020:07:28:10 +0000] "GET /neo4j HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36" 480 0.004 [default-neo4j-v1-service-7474] [] 10.244.0.29:7474 0 0.005 404 17a02ccd8a65d5ff396c78e819f3c4cc
Sin embargo, cuando accedo al neo4j service
, ejecutar línea de comando curl 10.244.0.29:7474
(pod url) o curl 10.0.0.100:7474
( url de servicio), puedo obtener respuesta :
[root@es3 cafe_ingress]# curl 10.244.0.29:7474
{
"bolt_routing" : "neo4j://10.244.0.29:7687",
"transaction" : "http://10.244.0.29:7474/db/{databaseName}/tx",
"bolt_direct" : "bolt://10.244.0.29:7687",
"neo4j_version" : "4.2.1",
"neo4j_edition" : "community"
}[root@es3 cafe_ingress]# curl 10.0.0.100:7474
{
"bolt_routing" : "neo4j://10.0.0.100:7687",
"transaction" : "http://10.0.0.100:7474/db/{databaseName}/tx",
"bolt_direct" : "bolt://10.0.0.100:7687",
"neo4j_version" : "4.2.1",
"neo4j_edition" : "community"
}
¿Cómo puedo solucionar este problema? ¡Espera tu ayuda, gracias!
Pregunta hecha hace 3 años, 4 meses, 29 días - Por scriptsculptor
3 Respuestas:
-
El problema ha sido resuelto. La razón del problema es el servicio de backend
neo4j
recurso perdido en el camino/neo4j
. Hay el problema de mi ingreso:apiVersion: extensions/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: rules: - host: cafe.example.com http: paths: - path: /tea backend: serviceName: tea-svc servicePort: 80 - path: /coffee backend: serviceName: coffee-svc servicePort: 80 - path: /neo4j backend: serviceName: neo4j-v1-service servicePort: 7474
Y luego , reconfig it , haciendo que tiene su dominio propietario , punto
/
al servicio deneo4j
, Funciona correctamente .El nuevo config de la ingresividad sigue:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: # tls: # - hosts: # - cafe.example.com # secretName: cafe-secret rules: - host: cafe.example.com http: paths: - path: /tea backend: serviceName: tea-svc servicePort: 80 - path: /coffee backend: serviceName: coffee-svc servicePort: 80 - host: neo4j.xxx.com http: paths: - path: / backend: serviceName: neo4j-v1-service servicePort: 7474
Respondida el Dec 17, 2020 a las 07:44 - por htmlhelix
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás experimentando parece estar relacionado con la configuración de tu Ingress en Kubernetes para el servicio de neo4j. Parece que la solicitud no se está enroutando correctamente al backend de neo4j.
Aquí tienes algunas sugerencias para solucionar el problema:
- Verifica la Configuración del Path en el Ingress:
/neo4j
está configurada correctamente en el Ingress para apuntar al servicio de neo4j. Revisa la configuración del Ingress para confirmar que la ruta y el backend están correctamente definidos.- Prueba Accediendo Directamente al Servicio de neo4j:
curl
, entonces el problema probablemente esté en la configuración del Ingress. Si no, verifica la configuración y la red del servicio de neo4j.- Verifica los Logs del Ingress Controller:
nginx-ingress-controller
para ver si hay algún error o mensaje relevante que pueda indicar por qué las solicitudes a neo4j están fallando. El error 404 que muestras en el log indica que la ruta no se está encontrando.- Prueba Acceder al Servicio de neo4j por IP Directa:
- Revisa las Reglas de Firewall o Seguridad:
Espero que estas sugerencias te ayuden a identificar y solucionar el problema con tu Ingress y el acceso al servicio de neo4j en Kubernetes. ¡Buena suerte! Si necesitas más ayuda, no dudes en hacerme saber.
Respondida el Dec 18, 2020 a las 07:47 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Posibles causas y soluciones:
1. Verificación de la regla de entrada:
Comprueba que la regla de entrada para el servicio
neo4j
tenga la ruta correcta (/neo4j
) y el puerto de destino correcto (7474). Asegúrate de que el protocolo del servicioneo4j
esté configurado como HTTP o HTTPS, según corresponda.2. Salud del servicio de destino:
Verifica que el servicio
neo4j
esté activo y en ejecución con endpoints saludables. Intenta acceder al servicioneo4j
directamente desde un pod o desde fuera del clúster para confirmar su disponibilidad.3. Enrutamiento de red:
Comprueba que haya una ruta de red clara entre el controlador de ingreso nginx y el servicio
neo4j
. Ejecuta el comandotraceroute
desde el pod del controlador de ingreso nginx al servicioneo4j
para verificar la ruta.4. Control de acceso:
Asegúrate de que el usuario o el servicio que intenta acceder al servicio
neo4j
tenga los permisos necesarios (por ejemplo, el rolingress-nginx
). Comprueba los registros del controlador de ingreso nginx para detectar errores relacionados con la autorización.5. Comprobaciones de capa de aplicación:
Examina los registros del servicio
neo4j
para detectar errores o advertencias relacionadas con las solicitudes HTTP (por ejemplo, encabezados mal formados). Intenta acceder al servicioneo4j
utilizando una herramienta de depuración HTTP (por ejemplo, cURL o Postman) para obtener detalles más específicos sobre los errores.6. Reinstalación del controlador de ingreso nginx:
Como último recurso, intenta reinstalar el controlador de ingreso nginx. Esto restablecerá la configuración y potencialmente resolverá cualquier problema de configuración subyacente.
Pasos adicionales:
Comprueba los eventos del clúster utilizando
kubectl get events
para detectar errores o advertencias relacionadas con el ingreso nginx o el servicioneo4j
. Habilita el nivel de registro de depuración para el controlador de ingreso nginx y el servicioneo4j
para obtener más información sobre el comportamiento. Examina los archivos de configuración (por ejemplo,nginx.conf
yingress.yaml
) para detectar posibles errores de sintaxis o configuración.Respondida el Dec 18, 2020 a las 07:53 - por Gemini
Votos positivos: 0 | Votos negativos: 0