Tengo un pequeño problema que ha estado tomando tanto tiempo sin suerte.
Tengo un clúster de EKS donde creé 2 implementaciones, cada una con su propio servicio.
Mis 2 aplicaciones son un servidor tensorflow y una aplicación de matraz que ejecuta consultas en el servidor tf utilizando la IP del servicio dedicado.
Ahora quiero acceder a la aplicación Flask que se ejecuta en uno de los 2 del mundo exterior. Así que creé un Ingress pero se muestra sin ninguna dirección cuando intento "kubectl get ingress".
NAME HOSTS ADDRESS PORTS AGE nlp-ingress * 80 4h5mTambién he notado lo siguiente en los registros del contenedor Flask
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 343-385-569 192.168.14.156 - - [16/Jul/2020 17:13:24] code 400, message Bad request syntax ('\x16\x03\x01\x00{\x01\x00\x00w\x03\x03') 192.168.14.156 - - [16/Jul/2020 17:13:24] "[35m[1m\00{\00\00w[0m" HTTPStatus.BAD_REQUEST - 192.168.14.156 - - [16/Jul/2020 17:13:24] "[37mGET / HTTP/1.1[0m" 200 - 192.168.14.156 - - [16/Jul/2020 17:13:24] "[37mGET / HTTP/1.1[0m" 200 -Mi archivo yaml de ingreso es el siguiente:
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: nlp-ingress spec: backend: serviceName: nlp-client-service servicePort: 5000El yaml de mi implementación y servicio de Flask:
apiVersion: apps/v1 kind: Deployment metadata: name: nlp-client-deployment spec: replicas: 1 selector: matchLabels: app: nlp-client template: metadata: labels: app: nlp-client spec: containers: - name: nlp-client-container image: myimage:latest command: - "python" - "main.py" - "--server" - "nlp-server-service:8501" ports: - containerPort: 5000 --- apiVersion: v1 kind: Service metadata: labels: run: nlp-client-service name: nlp-client-service spec: ports: - port: 5000 targetPort: 5000 selector: app: nlp-client type: LoadBalancerMi objetivo es probar mi clúster durante el desarrollo.
Cualquier ayuda es muy apreciada.
Para que la entrada funcione 💻, necesita un controlador de entrada como uno de estos . El más común es el controlador de ingreso Nginx .
Ahora, si está ejecutando ambas aplicaciones en el mismo clúster, ni siquiera necesita un Ingress en su servidor TF 🙅, bastaría con un Servicio simple en el puerto 5000 , asumiendo que ese es el puerto donde su servidor TF está escuchando .
Si aún desea usar un Ingress, aún puede usarlo, pero la ruta sería un poco extraña, lo que significa que la solicitud saldrá del clúster y luego volverá al clúster. 🖖