Python kubernetes得到502坏网关
对kubernetes来说是全新的,我遇到了一个问题,当我尝试使用api时,得到了一个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
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是如何设置的,否则我会在烧瓶需要的地方丢失一块。