Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
502(坏网关)尝试使用kubernetes访问我的Flask api时_Flask_Kubernetes_Google Cloud Platform - Fatal编程技术网

502(坏网关)尝试使用kubernetes访问我的Flask api时

502(坏网关)尝试使用kubernetes访问我的Flask api时,flask,kubernetes,google-cloud-platform,Flask,Kubernetes,Google Cloud Platform,我尝试在GCP上部署我的应用程序。我有一个Vuejs前端和一个带有Flask和Postgre数据库的api 一切都部署在GCP上的Kubernetes集群中。 我可以访问我的前端没有任何问题,但我不能访问api,我有一个502坏盖特威。 我认为a在我的配置中犯了一个错误。 以下是我的配置: **flask-service.yml** apiVersion: v1 kind: Service metadata: name: flask labels: service: flask

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

一切都部署在GCP上的Kubernetes集群中。 我可以访问我的前端没有任何问题,但我不能访问api,我有一个502坏盖特威。 我认为a在我的配置中犯了一个错误。 以下是我的配置:

**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
我的烧瓶应用程序是用gunicord部署的

gunicorn -b 0.0.0.0:5000 manage:app

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

这是我的文件

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"]
还有我的entrypoint.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)

当我检查时,我有两个Flask后端服务,其中一个不工作

GCP中的烧瓶图像日志显示错误。你知道为什么吗


我找到了解决方案。这是我的入口问题,我忘了添加入口控制器。(我对入口控制器一无所知…)


现在我添加了一个Nginx入口控制器,一切正常

它不是kubernetes问题,它的docker容器问题,似乎应用程序服务器没有在docker中运行,这就是为什么它返回502,您也可以共享Dockerfile吗?在服务中更改类型ClusterIP而不是NodePort。如果我没有错的话,这应该行得通。我认为你是对的,我的烧瓶图像的que GCP日志出错了。我认为有一个错误。我为我的日志添加了一个新的屏幕截图。我试图使用ClusterIP进行更改,但在尝试创建入口时出现了以下错误:
评估入口规范时出错:服务“default/flask”类型为“ClusterIP”,预期为“NodePort”或“LoadBalancer”
可能解决方案在flask映像日志中(我问题末尾的屏幕截图)ClusterIp在服务中,而不是入口,入口规则似乎很好