【问题标题】:Docker container ports are clashing in KubernetesDocker 容器端口在 Kubernetes 中发生冲突
【发布时间】:2020-10-18 08:08:12
【问题描述】:

我在具有 2 个节点的 kubernetes 集群上部署 docker 容器。 docker 容器需要打开端口 50052。我的理解是我只需要定义一个 containerPort (50052) 并有一个指向它的服务。

但是当我部署它时,只有前 2 个 pod 会成功启动。之后,我收到以下消息,可能是因为新的 pod 正在尝试打开已被使用的端口 50052。

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

我认为可以在同一个节点上调度具有相同请求端口的多个 pod?还是这样不对?

【问题讨论】:

  • 您能否将部署 YAML 文件添加到问题中以演示问题?
  • @DavidMaze 我想通了——我在我的 yaml 中将主机网络标志设置为 true,这就是造成这种情况的原因。谢谢

标签: docker kubernetes kubernetes-pod


【解决方案1】:

谢谢,我想通了——我在我的 kubernetes 部署中将主机网络设置为 true。将此更改回 false 解决了我的问题。

【讨论】:

    【解决方案2】:

    你是对的,一个集群中可以存在多个具有相同端口的 Pod。它们必须具有类型:ClusterIP

    ClusterIP:在集群内部 IP 上公开服务。选择此值使服务只能从集群内访问。这是默认的 ServiceType。

    为避免端口冲突,您不应使用 NodePort 作为端口类型。因为如果你有 2 个节点和 4 个 pod,每个节点上将存在一个以上的 pod,从而导致端口冲突。

    根据您想要访问集群的方式,您有不同的选择...

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 2021-01-04
      • 2021-03-20
      • 2021-07-23
      • 2018-08-10
      • 2020-07-11
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多