【问题标题】:Flask with Gunicorn on Kubernetes ingress yields 502 nginx error在 Kubernetes 入口上使用 Gunicorn 烧瓶会产生 502 nginx 错误
【发布时间】:2018-11-01 18:52:24
【问题描述】:

我已经构建了一个烧瓶应用程序,我想将它添加到 Kubernetes 入口。目前,我有 2 个问题我似乎无法理解:

  1. 为了让烧瓶应用程序能够处理多个请求,我想我会添加 gunicorn。我需要这个,还是可以通过使用某种自动水平缩放和入口路由层来处理它来缓解这个问题?我是 Kubernetes 新手,也许解决方案比我在下面尝试的更简单。
  2. 假设我确实需要 gunicorn,我继续将其添加到烧瓶泊坞窗中。我遇到的问题是我现在得到一个 502 Bad Gateway Error nginx 并且 pod 的日志没有打印任何错误。如果我创建负载均衡器服务而不是与入口一起使用的 clusterIP,则带有独角兽的烧瓶应用程序可以正常工作,就像烧瓶应用程序在入口上所做的那样没有添加 gunicorn。我不知道为什么要写这个问题。 dockerfile 安装所有依赖项以运行烧瓶并完成:

    EXPOSE 8080
    
    CMD ["gunicorn", "--config", "/flaskapp/gunicorn_config.py", "run:app"]
    

    我已经这样配置了我的入口:

    apiVersion: v1
    items:
    - apiVersion: extensions/v1beta1
      kind: Ingress
     metadata:
       annotations:
         ingress.bluemix.net/client-max-body-size: 128m
         ingress.bluemix.net/rewrite-path: serviceName=flask-service rewrite=/; 
    spec:
      rules:
      - host: <my-domain>
        http:
          paths:
          - backend:
            serviceName: flask-service
            servicePort: 8080
          path: /flask/
      tls:
      - hosts:
        - <my-domain>
        secretName: <my-secret>
    status:
      loadBalancer:
        ingress:
        - ip: <ip>
    

    服务如下所示:

    apiVersion: v1
    kind: Service
    metadata:
      name: flask-service
      labels:
        app: flask-service
    spec:
      type: ClusterIP
      ports:
      - port: 8080
        protocol: TCP
      selector:
        app: flask
    

    指定正确的镜像和端口,部署也很简单。

鉴于我需要 gunicorn(或类似产品),我该如何解决我得到的 502 Bad Gateway Error?

【问题讨论】:

    标签: flask kubernetes ibm-cloud gunicorn kubernetes-ingress


    【解决方案1】:
    1. IMO,您不需要 gunicorn 缩放(这是一种矫枉过正),因为如果您的单个应用程序实例已经存在,HPA 将进行缩放。这取决于 CPU、内存或custom metrics

    2. 在我看来,502 错误更多的是 gunicorn 的配置问题(工人有限制吗?你能看到工人只有 1 个来测试吗?它是如何在容器内扩展的?什么是容器的资源限制?)。如果不查看日志或环境很难判断,但可能是您的 gunicorn 工人在容器中颠簸,从而返回无效响应。您可能想在 gunicorn 命令行上尝试 --log-level debug

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2017-11-12
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 2016-03-19
      • 2014-12-07
      • 1970-01-01
      相关资源
      最近更新 更多