gpt4 book ai didi

python - 如何使用 Kubernetes Ingress 公开 Flask 应用程序?

转载 作者:行者123 更新时间:2023-12-02 20:55:39 25 4
gpt4 key购买 nike

我有一个名为 hwrequest 的简单 python Flask 应用程序。我可以从 PyCharm IDE 运行它,它运行良好。
我已经使用以下 Dockerfile 对这个应用程序进行了docker化

FROM python:3.8-alpine
LABEL maintainer="John Smith, john.smith@mycompany.com"
RUN apk update && apk add bash curl
COPY . /hwrequest
WORKDIR /hwrequest
RUN pip install -r app/requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["/hwrequest/app/app.py"]
我可以 exec -it 到容器中,当我成功调用时 curl 127.0.0.1:5000现在我正在尝试将此应用程序部署到 Kubernetes 并使用 Ingress 公开它。
这是我的 YAML 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: "hwrequest"
name: "hwrequest"
spec:
replicas: 1
selector:
matchLabels:
app: "hwrequest"
template:
metadata:
labels:
app: "hwrequest"
spec:
containers:
- name: "hwrequest"
image: "myregistry.com/hwrequest:0.0.4"
imagePullPolicy: Always
ports:
- containerPort: 5000
apiVersion: v1
kind: Service
metadata:
name: "hwrequest"
labels:
app: "hwrequest"
spec:
type: ClusterIP
ports:
- port: 5000
targetPort: 5000
selector:
app: "hwrequest"
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: "hwrequest"
spec:
rules:
- http:
paths:
- backend:
serviceName: "hwrequest"
servicePort: 5000
host: "hwrequest.mycompany.com"
当我打电话时 curl hwrequest.mycompany.com我收到 502 Bad Gateway我究竟做错了什么?

最佳答案

使用 ingress 在 kubernetes 上公开任何应用程序是一项非常重要的任务,这里有几件事要寻找

  • 确保应用程序正在监听 0.0.0.0而不是 127.0.0.1
  • curl 请求应该有 Host标题即 -H "Host: hwrequest.mycompany.com"因为这就是入口 Controller 如何知道根据入口资源中定义的规则应用哪个规则。
  • 需要有一个入口 Controller ,例如在集群中运行的 nginx,并且入口 Controller pod 需要通过 NodePort 公开。或 LoadBalancer类型服务或可以使用 hostNetwork: true 进行部署
  • 您需要使用 NODEIP (kubernetes 节点)和 NODEPORT如果在 curl 中 NodePort使用了服务,所以它看起来像 curl http://<NODEIP>:NODEPORT -H "Host: hwrequest.mycompany.com" .

  • 如果您使用 hostNetwork要公开 nginx 入口 Controller pod,那么 curl 应该是 curl http://-H "Host: hwrequest.mycompany.com"`
    如果您使用 LoadBalancer键入服务(适用于 AWS、Azure、GCP 等云提供商)然后 curl 应该是 curl http://-H "Host: hwrequest.mycompany.com"`
    如果您刚刚开始,我建议您查看此 guide在 Minikube 上使用 nginx 入口

    关于python - 如何使用 Kubernetes Ingress 公开 Flask 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63130616/

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