尝试使用kubernetes访问我的Flask api时出现502(错误网关)

时间:2020-09-18 10:24:00

标签: flask kubernetes google-cloud-platform

我尝试在GCP上部署我的应用程序。我在Vuejs中有一个前端,有一个Flask和Postgre数据库的api

一切都部署在GCP的Kubernetes集群中。 我可以毫无问题地访问我的前端,但是我无法使用api,我的502错误。 我认为我的配置有误。 这是我的配置:

**flask-service.yml**

apiVersion: v1
kind: Service
metadata:
  name: flask
  labels:
    service: flask
spec:
  type: NodePort
  selector:
    app: flask
  ports:
  - protocol: TCP
    port: 5000
    targetPort: 5000

vue-service.yml文件

**vue-service.yml**

apiVersion: v1
kind: Service
metadata:
  name: vue
  labels:
    service: vue
spec:
  type: NodePort
  selector:
    app: vue
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080

ingress.yml文件

ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: vue
          servicePort: 8080
      - path: /api/*
        backend:
          serviceName: flask
          servicePort: 5000

我的flask应用程序已与gunicord一起部署

gunicorn -b 0.0.0.0:5000 manage:app

screeshot of my GCP cluster services

你知道我在哪里犯错了吗?我是kubernetes的初学者

这是我的Dockerfile

FROM python:3.8.1-slim

# install netcat
RUN apt-get update && \
    apt-get -y install netcat && \
    apt-get clean

# set working directory
WORKDIR /usr/src/app

# add and install requirements
RUN  pip install --upgrade pip
RUN pip install -U gunicorn
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

# add entrypoint.sh
COPY ./entrypoint.sh /usr/src/app/entrypoint.sh
RUN chmod +x /usr/src/app/entrypoint.sh

# add app
COPY . /usr/src/app

# run server
CMD ["/usr/src/app/entrypoint.sh"]

还有我的入口点。sh

echo "Waiting for postgres..."

while ! nc -z postgres 5432; do
  sleep 0.1
done

echo "PostgreSQL started"

gunicorn -b 0.0.0.0:5000 manage:app

再进行一次编辑。在GCP中,当我检查后端服务时,有3个后端,其中一个不起作用 但是为什么我有3个后端?我应该有两个否(烧瓶和Vue)吗?

我检查时,有2个使用Flask的后端服务,其中一个不起作用

The backend services (flask) with problems

the other backend services (flask)

我在GCP中的Flask Image日志显示错误。你知道为什么吗?

GCP log of my flask image

1 个答案:

答案 0 :(得分:1)

我创建了解决方案。我的入口出现问题,我忘了添加一个入口控制器。 (我对Ingress Controler一无所知...)

现在,我添加了一个Nginx Ingress Controler,一切正常!