我已经按照文档中提到的设置了Nginx控制器https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/.我已经用以下配置设置了入口
入口级
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: nginx
# annotations:
# ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: nginx.org/ingress-controller
入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: hn-service-ingress
spec:
ingressClassName: nginx
rules:
- host: hostnameservice.classpath.com
http:
paths:
- path: /test
backend:
serviceName: hostname-service
servicePort: 80
以下是运行describe
命令时的错误。我正在获取All hosts are taken by other resources
kubectl describe ingress hn-service-ingress
Name: hn-service-ingress
Namespace: pradeep
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
hostnameservice.classpath.com
/test hostname-service:80 (100.96.1.12:8111,100.96.1.13:8111,100.96.2.13:8111)
Annotations: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Rejected 5s nginx-ingress-controller All hosts are taken by other resources
当我使用cafe
示例进行检查时,它运行良好。我哪里错了?
注意:我已经配置了AWS负载均衡器,并使用dnslookup将/etc/hosts
设置为指向AWS的ELB
。
请记住Nginx
有三种类型。CCD_ 7、CCD_ 8(nginx-inc(和CCD_。
正如我在评论中提到的,这个问题是由使用相同host
的资源引起的。这叫做主机碰撞。
当多个资源配置同一主机时,会发生主机冲突。Ingress Controller
支持两种处理主机冲突的选项:
- 选择获胜者
如果多个资源争夺同一主机,入口控制器将根据资源的creationTimestamp选择获胜者:最古老的资源将获胜。如果存在多个最旧的资源(它们的creationTimestamp相同(,入口控制器将选择具有字典式最小uid的资源。
- 同一主机的合并配置
可以为同一主机合并多个Ingress资源的配置。这种方法的一个常见用例是将资源分布在多个命名空间中。
OP确认,这是通过在另一个namespace
中的另一Ingress
资源中所做的更改来解决的。
我能够解决这个问题。在另一个名称空间中又有一个Ingress