【发布时间】:2018-10-14 15:20:56
【问题描述】:
我设置了两个简单的 kubernetes 服务和部署 - 前端和 api。前端从 api 获取数据,因此我也公开了 api,因此我可以在前端数据获取调用中硬编码后端入口 URL(如果有人知道在集群内部执行此操作的更好方法,请告诉我)。
我正在尝试为不同的服务设置不同的主机名,但由于某种原因,只有一个主机名有效。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-webapp-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test-webapp-frontend.com
http:
paths:
- path: /
backend:
serviceName: test-webapp-frontend-lb
servicePort: 8002
- host: test-webapp-api.com
http:
paths:
- path: /get
backend:
serviceName: test-webapp-api-lb
servicePort: 8001
这就是我运行kubectl get svc后得到的结果
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d
test-webapp-api-lb LoadBalancer 10.107.60.163 <pending> 8001:30886/TCP 1h
test-webapp-frontend-lb LoadBalancer 10.104.100.108 <pending> 8002:31431/TCP 1h
我在本地使用 minikube 来运行这个集群。我可以通过运行minikube service test-webapp-frontend-lb 和minikube service test-webapp-api-lb 来访问前端和api。
当我转到test-webapp-frontend.com 时,我可以看到前端页面,但我无法访问test-webapp-api.com。甚至没有默认的未找到错误,我只是无法访问它,就好像 URL 不存在一样。
奇怪的是,如果我这样做,
spec:
rules:
- host: test-webapp-frontend.com
http:
paths:
- path: /
backend:
serviceName: test-webapp-frontend-lb
servicePort: 8002
- host: test-another-frontend.com
http:
paths:
- path: /
backend:
serviceName: test-webapp-frontend-lb
servicePort: 8002
我仍然可以访问test-webapp-frontend.com,但test-another-frontend.com 有同样的问题,根本无法访问。
我做错了什么??
【问题讨论】:
标签: kubernetes kubernetes-ingress