Flask Kubernetes入口带有Gunicorn的烧瓶产生502 nginx错误

Flask Kubernetes入口带有Gunicorn的烧瓶产生502 nginx错误,flask,kubernetes,ibm-cloud,gunicorn,kubernetes-ingress,Flask,Kubernetes,Ibm Cloud,Gunicorn,Kubernetes Ingress,我已经建立了一个烧瓶应用程序,我想添加到Kubernetes入口。目前,我有两个问题无法回答: 为了让flask应用程序能够处理多个请求,我想我应该添加gunicorn。我需要这样做吗?或者我可以通过使用某种自动水平缩放和入口路由层来处理它来缓解这种情况吗?我是Kubernetes的新手,也许解决方案比我下面尝试的要简单 假设我确实需要gunicorn,我继续把它添加到烧瓶码头。我的问题是,我现在得到一个502坏网关错误nginx,pod的日志没有打印任何错误。如果我创建了一个负载平衡器服务,而

我已经建立了一个烧瓶应用程序,我想添加到Kubernetes入口。目前,我有两个问题无法回答:

  • 为了让flask应用程序能够处理多个请求,我想我应该添加gunicorn。我需要这样做吗?或者我可以通过使用某种自动水平缩放和入口路由层来处理它来缓解这种情况吗?我是Kubernetes的新手,也许解决方案比我下面尝试的要简单
  • 假设我确实需要gunicorn,我继续把它添加到烧瓶码头。我的问题是,我现在得到一个502坏网关错误nginx,pod的日志没有打印任何错误。如果我创建了一个负载平衡器服务,而不是我在入口中使用的clusterIP,那么使用unicorn的flask应用程序工作得很好,就像flask应用程序在入口上所做的那样,而不添加gunicorn。我不知道为什么要写这个问题。dockerfile安装所有依赖项以运行flask,并完成以下操作:

    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坏网关错误

  • 在我看来,您不需要gunicorn扩展(这是一种过分的做法),因为如果您的单个应用程序实例已经存在,HPA将进行扩展。这取决于CPU、内存或内存

  • 在我看来,502错误更多的是关于gunicorn如何配置的问题(workers是否有限制?您是否可以看到workers仅为1进行测试?它如何在容器内扩展?容器上的资源限制是什么?)。如果不查看日志或环境,很难判断,但可能是您的gunicorn工作人员在容器中来回摆动,从而返回无效响应。您可能需要尝试使用gunicorn命令行

  • 希望能有帮助