Getting All hosts由Nginx Ingress Controller的其他资源占用



我已经按照文档中提到的设置了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

最新更新