python - kubernetes getting 502 bad gateway
问题描述
Brand new to kubernetes and am having an issue where I am getting a 502 bad gateway when trying to hit the api.
My configs look like this
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
and in my flask app I have the following:
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
Not sure where I went wrong here
my minikube ip is 192.168.99.104 and I'm trying to hit the api route of 192.168.99.104/api/status
解决方案
您没有正确公开您的服务。首先,ClusterIP类型的服务仅在集群内可用。当您使用 minikube 时,您应该尝试更改类型 do NodePort。
其次,在 yaml 中声明的端口是使服务对集群内的其他服务可见的端口。
创建 NodePort 服务后,执行kubectl get svc
以查看分配给该服务的外部端口。您将看到类似80:30351/TCP的内容。这意味着您可以在192.168.99.104:30351访问该服务。
这是解释如何在 minikube 中公开服务的一个很好的答案
推荐阅读
- qt - 如何使用自制软件安装 qt4
- java - 从 html 中检索值并打印到控制器
- r - 使用共享访问签名下载 Azure blob 失败并出现 curl 或 httr
- twitter-bootstrap-3 - 超过 12 时隐藏引导程序 3 列
- vbscript - VBScript 无法删除文件夹“权限被拒绝错误”
- qml - 如何在 iOS 和 Android 中访问 QML 本地存储
- javascript - 压缩 webpack 插件
- java - 如何使缩小图像的拖动消失?
- javascript - Safari 问题 - 使用 AJAX 的下拉菜单
- html - Bootstrap 可关闭警报一直显示在页面加载中