kubernetes - 警告 : Rejected - All hosts are taken by other resources

标签 kubernetes nginx kubernetes-ingress nginx-ingress

我正在尝试设置 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/

相关文章:

kubernetes - K8s Pod 生命周期 Hook

ubuntu - 当我通过 https 访问我的站点时,浏览器从服务器下载源代码

node.js - 跨 node.js 和 nginx 的身份验证

networking - Kubernetes 暴露的 pod 连接被拒绝 - 有时有效,有时无效

docker - 如何在docker中列出可用的存储驱动程序?

kubernetes - 在 logstash 启动版本 7.1.1 上接收 SIGTERM

kubernetes - GCP K8的 native 入口保留客户端IP

laravel - 本地域的 SSL

angular - Nginx/Angular 应用程序的 Istio Ingress 路由失败并显示 404

kubernetes - 解析 templates/deployment.yaml 时出错 : json: line 1: invalid character '{' looking for beginning of object key string