节点没有用于请求的 pod 端口的可用端口

Gau*_*tly 7 kubernetes

在默认命名空间中部署了入口控制器,并尝试在另一个命名空间中部署,但收到此错误:

0/8 个节点可用:8 个节点没有用于请求的 pod 端口的可用端口。

但在解决方案中看到了类似的错误:您不需要在集群中部署多个入口控制器。部署在命名空间中的入口控制器应该能够跨集群为所有命名空间中的所有 Pod 工作。入口控制器通常具有允许其访问入口服务的集群。集群中所有命名空间的端点。

0/3 个节点可用:1 个节点没有用于请求的 pod 端口的可用端口,2 个节点与节点选择器不匹配

那么,如果我让它在一个命名空间中工作可以吗?

Mal*_*ata 0

您提到的链接中描述的问题与traefik有关。

总的来说,此类错误是与调度相关的问题。它是由 kubernetes 调度程序生成的。它与 ingress-nginx 无关。
您应该检查正在使用端口的内容。

看一下:ingress-scheduler

还谈到集群中的多个入口控制器。

例如,如果您使用 NGINX Ingress Controller,则关于它处理哪些配置资源,您有三个选项:

  • 单命名空间入口控制器- 它仅处理来自特定命名空间的配置资源,该命名空间通过 --watch-namespace 命令行标志进行控制。如果您想为不同的应用程序使用不同的 NGINX 入口控制器,无论是在隔离还是/或操作方面,它都非常有用。
  • 集群范围的入口控制器- 它处理在集群的任何命名空间中创建的配置资源。由于 NGINX 是一个高性能负载均衡器,能够同时为多个应用程序提供服务,因此默认使用此选项
  • 特定入口类别的入口控制器。它与上述任一选项结合使用。您可以通过配置 Ingress Controller 的类并在配置资源中使用该类来进一步自定义 Ingress Controller 处理哪些配置资源。

默认情况下,此类控制器是集群范围的 - 它们处理在任何命名空间中创建的资源,因此无需创建多个控制器来确保它们适用于每个命名空间中的资源。

了解更多:入口控制器