【问题标题】:Expose FastAPI from EKS to external world with AWS Load Balancer使用 AWS 负载均衡器将来自 EKS 的 FastAPI 公开给外部世界
【发布时间】:2021-11-11 08:11:22
【问题描述】:

我在 EKS 中部署了一个 FastAPI 应用程序。它目前正在侦听端口 8000。它正在使用 uvicorn 运行。

我正在尝试通过在 EKS 中创建服务来从 AWS 创建经典负载均衡器,从而将其对外公开。

apiVersion: v1
kind: Service
metadata:
  name: bc-warrants-api-svc
spec:
  type: LoadBalancer
  selector:
    app: bc-warrants-api
  ports:
    - protocol: TCP
      port: 8000
      targetPort: 8000

当我检查负载均衡器时,它说目标实例是 OutOfService。

我有一个运行良好的 Django 应用程序(通过经典负载平衡器对外公开)。

有人知道我在使用 FastAPI 时做错了什么吗?

【问题讨论】:

  • 我现在开始工作了。我将应用程序的端口更改为端口 80,并从容器中公开端口 80。将 LoadBalancer、port 和 targetPort 类型的 Service 更新为 80。

标签: python amazon-web-services amazon-eks aws-load-balancer


【解决方案1】:

检查 CLB 的健康检查。罪魁祸首通常会在那里。您可以看到您的 CLB 正在哪个端口和端点上执行健康检查。在适当的端点上配置健康检查,该实例应再次标记为健康。

【讨论】:

    【解决方案2】:

    从截图来看,我假设您的 Uvicornlisteningdefault hostport 绑定到 @987654324 @ 和端口8000

    要让您的应用程序暴露在互联网上,您需要将 default listen address 更改为 0.0.0.0

    $ uvicorn main:app --host 0.0.0.0 --reload
    

    您可以在此处获取更多详细信息:https://www.uvicorn.org/settings/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2021-03-28
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      相关资源
      最近更新 更多