【发布时间】:2019-07-10 14:11:52
【问题描述】:
我有一个在 Azure 上运行的 Kubernetes 集群。我使用 nginx-ingress 来处理传入的请求。为了设置入口,我使用了官方指南 https://kubernetes.github.io/ingress-nginx/deploy/#azure 。 我还创建了一个要用于 Ingress 的公共静态 IP。 不幸的是,我找不到入口服务(generic-deployment.yaml)。另外,我的入口是不可描述的。
我是如何安装 Ingress 的:
$ sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
...
deployment.apps/nginx-ingress-controller created
$ sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml
service/ingress-nginx created
另外,我通过 ingress.yaml 安装了一些路由配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path:
backend:
serviceName: app0-service
servicePort: 80
- path: /app1
backend:
serviceName: app1-service
servicePort: 80
$sudo kubectl apply -f ingress.yaml
ingress.extensions/myingress created
什么让我困惑
很遗憾,我找不到我的 ingress-nginx 服务。
$ sudo kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
app0-service ClusterIP 10.0.28.3 <none> 80/TCP 3m48s
app1-service ClusterIP 10.0.226.249 <none> 80/TCP 3m47s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 39m
但我的入口正在运行:
$ sudo kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
myingress * 23.97.xxx.xxx 80 54m
在浏览器中 23.97.xxx.xxx 部分工作。
1)如果我代理一个域名到23.97.xxx.xxx,浏览器中的域名会被这个IP改写。
2) 如果我尝试直接浏览到子路由,例如 23.97.xxx.xxx/app1/page1。每次app1的主页面我都得到。
我希望从我的入口服务获得 IP。因为我想通过将 loadbalancerIP 添加到 cloud-generic.yaml 中的规范来更新此 IP 地址。 (比如https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/static-ip/static-ip-svc.yaml)。
我来自 ingress 的 IP 是否适合使用?为什么我找不到我的入口服务?
【问题讨论】: