【问题标题】:EKS Ingress without Address - Trying to test my EKS cluster没有地址的 EKS 入口 - 尝试测试我的 EKS 集群
【发布时间】:2020-07-16 21:44:50
【问题描述】:

我遇到了一个小问题,花了很多时间都没有运气。

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

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

现在我想从外界访问在 2 个之一上运行的 Flask 应用程序。所以我创建了一个入口,但是当我尝试“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\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 -

我的入口 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

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

非常感谢任何帮助。

【问题讨论】:

    标签: amazon-web-services flask kubernetes kubernetes-ingress amazon-eks


    【解决方案1】:

    为了让入口工作?,你需要一个入口控制器,比如one of these。最常见的是Nginx ingress controller

    现在,如果您在同一个集群上运行这两个应用程序,您甚至不需要在您的 TF 服务器上设置一个 Ingress ?,在端口 5000 上使用一个普通的 Service 就可以了,假设这是您的 @987654324 所在的端口@。

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

    【讨论】:

    • 谢谢@Rico,我实际上已经公开了一项服务,而且我现在确实可以测试 Flask 应用程序了。但是,即使在日志中显示 grpc 服务器工作正常,TF 服务器似乎也表现得很奇怪。当我尝试来自 Flask 应用程序或 Postman 的请求时,它似乎只是超时了。我会对其进行更多研究,并可能就此提出一个新问题。
    猜你喜欢
    • 2020-06-28
    • 1970-01-01
    • 2021-07-20
    • 2019-11-21
    • 1970-01-01
    • 2021-11-14
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多