没有地址的 EKS 入口 - 尝试测试我的 EKS 集群

EKS Ingress without Address - Trying to test my EKS cluster

我遇到了一个小问题,花了很多时间,运气不好。

我有一个 EKS 集群,我在其中创建了 2 个部署,每个部署都有自己的服务。

我的 2 个应用程序是一个 tensorflow 服务器和一个 flask 应用程序,它使用专用于它的服务的 IP 在 tf 服务器上运行查询。

现在我想从外部世界的 2 之一访问 Flask 应用程序 运行。所以我创建了一个 Ingress,但是当我尝试“kubectl get ingress”时,它根本没有显示任何地址。

NAME          HOSTS   ADDRESS   PORTS   AGE
nlp-ingress   *                 80      4h5m

我在 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[=11=]{[=11=][=11=]w[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 -

我的入口 yaml 文件如下:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nlp-ingress
spec:
  backend:
    serviceName: nlp-client-service
    servicePort: 5000

我的 Flask 部署和服务的 yaml:

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: LoadBalancer

我的目标是在开发过程中测试我的集群。

非常感谢任何帮助。

要让 ingress 正常工作,您需要像 one of these. The most common one is the Nginx ingress controller 这样的 ingress 控制器。

现在,如果您 运行 两个应用程序都在同一个集群上,您甚至不需要 TF 服务器上的入口,一个普通的 Service on port 5000 would do, assuming that's the port where your TF server is listening on

如果您仍然想使用 Ingress,您仍然可以使用它,但路径会有点奇怪,这意味着请求将如何离开集群然后返回集群。