Laz*_*ass 5 kubernetes kubernetes-ingress nginx-ingress
我正在尝试添加多个应共享同一主机的入口。一个 Ingress 应该处理对 www.example.de/some 的请求,另一个 Ingress 应该处理所有其他请求。
这是 Ingress 配置的片段
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: some-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "www.example.de"
http:
paths:
- path: "/some"
backend:
serviceName: some-svc
servicePort: 8585
Run Code Online (Sandbox Code Playgroud)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: other-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "www.example.de"
http:
paths:
- backend:
serviceName: other-svc
servicePort: 8080
Run Code Online (Sandbox Code Playgroud)
作为入口控制器,我安装了nginx-stable/nginx-ingressvia Helm
helm install my-ingress nginx-stable/nginx-ingress
Run Code Online (Sandbox Code Playgroud)
当尝试从上面创建两个入口时,在尝试访问 www.example.de 时只有一个入口正在工作(这在我的 /etc/hosts 中映射到 127.0.0.1)。
在 nginx-ingress 日志中看到以下警告:
2020/01/08 09:33:51 [警告] 560#560: 0.0.0.0:80 上的服务器名称“www.example.de”冲突,已忽略
2020/01/08 09:33:51 [警告] 560#560:0.0.0.0:443 上的服务器名称“www.example.de”冲突,已忽略
事实证明我使用了错误的nginx-ingress控制器。控制器nginxinc/kubernetes-ingress不支持将 Ingress 规则与同一主机合并(仅通过Mergeable Ingresses)。
相反,kubernetes/ingress-nginx应该使用 。此处列出了这些控制器之间的差异。
删除旧控制器并kubernetes/ingress-nginx使用以下命令进行安装修复了问题。
helm install my-nginx stable/nginx-ingress
Run Code Online (Sandbox Code Playgroud)
请参阅https://kubernetes.github.io/ingress-nginx/deploy/#using-helm
| 归档时间: |
|
| 查看次数: |
6218 次 |
| 最近记录: |