我正在尝试设置 Nginx-ingress Controller
来管理基于裸机的集群中同一主机名
上的两个路径。
在 app1 命名空间中,我有以下 nginx 资源:-
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app1-ingress
namespace: app1
spec:
ingressClassName: nginx
rules:
- host: web.example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
在 app2 命名空间中,我有以下 nginx 资源:-
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app2-ingress
namespace: app2
spec:
ingressClassName: nginx
rules:
- host: web.example.com
http:
paths:
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
我的 app1-service
首先应用,并且运行良好,现在当我应用第二个 app2-service
时,它显示以下警告,并且无法在浏览器上访问它.
Annotations: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Rejected 54s nginx-ingress-controller All hosts are taken by other resources
Warning Rejected 54s nginx-ingress-controller All hosts are taken by other resources
Warning Rejected 54s nginx-ingress-controller All hosts are taken by other resources
如何配置 nginx 入口资源以连接同一主机名上的多个服务路径?
最佳答案
默认的 Nginx Ingress Controller 不支持具有相同主机名的不同 Ingress
资源。您可以拥有一个包含多个路径的 Ingress
资源,但在这种情况下,所有应用都应位于同一个命名空间中。像这样:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app1-ingress
namespace: app1
spec:
ingressClassName: nginx
rules:
- host: web.example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
标准 Nginx Ingress Controller 当前不支持在命名空间之间拆分入口。
但是,您可以查看 Nginx Ingress 的替代实现由 Nginx Inc. 他们支持 Mergeable Ingresses .
关于kubernetes - 警告 : Rejected - All hosts are taken by other resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75490731/