因此,我通过遵循本教程https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
来尝试建立并运行基本的gcp kubernetes集群。但是,我一直坚持使用/以外的任何路径为图像创建入口路径,但我尝试了很长时间,但我认为这里可能遗漏了一些明显的东西,因为我实际上开始发疯了。 / p>
对于上下文,我使用的是Google云平台,我构建了一个基本的flask应用程序,对其进行了dockerize并将其保存在Google容器注册表中。 我为烧瓶映像创建了一个基本部署:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: flask-app-tutorial
labels:
name: flask-app-tutorial
spec:
replicas: 1
selector:
matchLabels:
name: flask-app-tutorial
template:
metadata:
name: flask-app-tutorial
labels:
name: flask-app-tutorial
spec:
containers:
- name: flask-app-tutorial
image: gcr.io/my-project/flask-app:v1
ports:
- containerPort: 8080
resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
env:
- name: DEBUG_MODE
value: "1"
然后我使用以下命令行公开此部署:
kubectl expose deployment flask-app-tutorial --target-port=8080 --type=NodePort
然后创建服务。
然后,当我尝试通过此入口公开路线时:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: flask-app-tutorial
servicePort: 8080
- path: /server/*
backend:
serviceName: flask-app-tutorial
servicePort: 8080
已创建入口,并且一段时间后ip-address /可以访问所有后端,并且这些后端都正常,并会请求相应的服务器:
curl -I ip-address
HTTP/1.1 200 OK
Server: gunicorn/19.9.0
Date: Mon, 18 Nov 2019 15:45:23 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12
Via: 1.1 google
但是ip-address / server /给我一个404:
curl -I ip-address/server/
HTTP/1.1 404 NOT FOUND
Server: gunicorn/19.9.0
Date: Mon, 18 Nov 2019 15:46:06 GMT
Content-Type: text/html
Content-Length: 233
Via: 1.1 google
我在某处读到应该以某种方式涉及到入口控制器,我真的不明白为什么,因为当我尝试路由同一台/ server但使用另一个映像(例如,hashicorp / http-echo)时,一切正常。
flask应用程序没什么特别的,它是一个基本的问候世界: https://gist.github.com/pyk/f9c183466062e8ff63efaa46e7c5485f#file-app-py https://gist.github.com/pyk/51a7db451f2ab66d9764df04cfb0222b#file-config-py
任何建议都是值得欢迎的,因为我花了很多时间试图找出问题所在,但我并没有像您想象的那样具有发展背景。
提前谢谢!