gpt4 book ai didi

在 Kubernetes 入口上使用 Gunicorn 的 Flask 产生 502 nginx 错误

转载 作者:行者123 更新时间:2023-12-03 16:07:15 28 4
gpt4 key购买 nike

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

  • 为了让flask 应用程序能够处理多个请求,我想我会添加gunicorn。我需要这个吗,或者我可以通过使用某种自动水平缩放和入口路由层处理它来缓解这种情况吗?我是 Kubernetes 的新手,也许解决方案比我在下面尝试的更简单。
  • 假设我确实需要 gunicorn,我继续将其添加到 flask docker 中。我遇到的问题是我现在收到 502 Bad Gateway Error nginx 并且 pod 的日志没有打印任何错误。如果我创建负载均衡器服务而不是用于入口的 clusterIP,则带有 unicorn 的flask 应用程序可以正常工作,就像flask 应用程序在入口上所做的一样没有 添加枪炮。我不知道为什么要写这个问题。 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 Bad Gateway 错误?

    最佳答案

  • IMO,您不需要 gunicorn 缩放(这是一种矫枉过正),因为如果您的单个应用程序实例已经,HPA 将进行缩放。这取决于 CPU、内存或 custom metrics .
  • 在我看来,502 错误更多是 gunicorn 的配置问题(对 worker 有限制吗?你能看到 worker 只有 1 来测试吗?它如何在容器内扩展?容器上的资源限制是多少? ?)。不查看日志或环境很难判断,但可能是您的 gunicorn worker 在容器中颠簸,从而返回无效响应。您可能想尝试 --log-level debug在 gunicorn 命令行上。

  • 希望能帮助到你。

    关于在 Kubernetes 入口上使用 Gunicorn 的 Flask 产生 502 nginx 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53107579/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com