Python kubernetes得到502坏网关

Python kubernetes得到502坏网关,python,flask,kubernetes,kubernetes-ingress,Python,Flask,Kubernetes,Kubernetes Ingress,对kubernetes来说是全新的,我遇到了一个问题,当我尝试使用api时,得到了一个502坏网关 我的配置看起来像这样 apiVersion: v1 kind: Service metadata: name: api-cluster-ip-service spec: type: ClusterIP selector: component: api ports: - port: 80 targetPort: 50

对kubernetes来说是全新的,我遇到了一个问题,当我尝试使用api时,得到了一个502坏网关

我的配置看起来像这样

apiVersion: v1
kind: Service
metadata:
    name: api-cluster-ip-service
spec:
    type: ClusterIP
    selector:
        component: api
    ports:
        - port: 80
          targetPort: 5000


apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: api
  template:
    metadata:
      labels:
        component: api
    spec:
      containers:
        - name: books-api
          image: mctabor/books-api
          ports:
            - containerPort: 5000


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: books-ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - http:
        paths:
          - path: /api/?(.*)
            backend:
              serviceName: api-cluster-ip-service
              servicePort: 80
在我的烧瓶应用程序中,我有以下内容:

if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
我不知道我哪里出错了


我的minikube ip是192.168.99.104,我正在尝试使用192.168.99.104/api/status的api路径

您没有正确公开您的服务。首先,ClusterIP类型的服务仅在集群内可用。在使用minikube时,应尝试更改do NodePort类型

其次,yaml中声明的端口是使集群中的其他服务可见的端口

创建节点端口服务后,执行
kubectl get svc
查看分配给该服务的外部端口。您将看到类似于80:30351/TCP的内容。这意味着您可以访问192.168.99.104:30351的服务


在解释如何在minikube中公开服务时,这是一个很好的答案

我不认为这是正确的。我在另一个项目中有这个确切的设置,但使用的是Express API而不是flask应用程序。入口应路由至正确的吊舱。这个项目与快速项目有些不同。我想这可能和重写有关。在我的另一个项目中,我可以通过点击minikube ip/API/值而不指定端口来轻松点击API。抱歉,我错过了使用nginx入口的部分。为了检查问题是否存在于重写中,可以尝试将重写目标/$1替换为/service和/api/service的路径吗?我假设你的应用程序中有
@app.route(“/service”)
,我不知道怎么做。但我所做的是将我的api映像更改为一个不同于我使用的类的api映像,该类使用的是express api而不是flask api。这一个没有改变任何其他东西。所以这一定是我的烧瓶api是如何设置的,否则我会在烧瓶需要的地方丢失一块。