【问题标题】:node(s) didn't have free ports for the requested pod ports节点没有用于请求的 pod 端口的空闲端口
【发布时间】:2020-12-15 20:22:08
【问题描述】:

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

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

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

0/3 nodes are available: 1 node(s) didn't have free ports for the requested pod ports, 2 node(s) didn't match node selector

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

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

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

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

    看看:ingress-scheduler.

    还谈到集群中的多个 Ingress Controller。

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

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

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

    阅读更多:ingress-controllers

    【讨论】:

    • 在我的例子中,我有 2 个入口控制器(轮廓) - 一个内部和外部面向,具有重叠配置。
    猜你喜欢
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    相关资源
    最近更新 更多