NodePort、HostPort 和 Cluster IP 的区别

问题描述 投票:0回答:2

Rancher 2 在部署新工作负载时在“端口”部分提供了 4 个选项:

  • 节点端口
  • 主机端口
  • 集群IP
  • 第 4 层负载均衡器

有什么区别?尤其是 NodePort、HostPort 和 Cluster IP 之间?

docker kubernetes rancher
2个回答
31
投票

HostPort(运行 pod 的节点): 与 docker 类似,这将在运行 pod 的节点上打开一个端口(这允许您在主机上打开端口 80)。然而,设置运行非常容易:

除非绝对必要,否则不要为 Pod 指定主机端口。当您将 Pod 绑定到 hostPort 时,它会限制 Pod 可以调度的位置数量,因为每个组合必须是唯一的。如果您没有明确指定主机IP和协议,Kubernetes将使用0.0.0.0作为默认主机IP,并使用TCP作为默认协议。 kubernetes.io

NodePort(在每个节点上): 仅限于端口 30,000 到 ~33,000 之间的端口。这通常只有与外部负载均衡器结合使用才有意义(如果您想在端口 80 上发布 Web 应用程序)

如果您明确需要在节点上公开 Pod 的端口,请在求助于 hostPort 之前考虑使用 NodePort 服务。 kubernetes.io

集群 IP(仅限内部): 正如描述所述,这将打开一个仅可用于在同一集群中运行的内部应用程序的端口。使用此选项的服务可通过内部 cluster-ip 访问。


8
投票
将其部署到每个节点
Host Port
Node Port
Cluster IP
pod
使用
hostPort
时,与节点端口的连接将直接转发到在该
pod
 上运行的 
node
通过
NodePort
服务,到节点端口的连接将转发到随机选择的
pod
(可能在另一个
node
在集群中的
Service
上公开
internal IP
。这种类型使得服务只能从集群内部访问。
使用
hostPort
的pod,节点的端口仅绑定在运行此类pod的节点上
NodePort
服务将端口绑定在所有节点上,即使在那些不运行此类 pod 的节点上
不适用
hostPort 功能主要用于暴露系统服务,使用
DaemonSets
不适用 不适用

一般询问问题

Q1: 当许多 Pod 在具有 NodePort 的同一节点上运行时会发生什么?

A: 使用

NodePort
,无论您有一个还是多个节点,端口在每个节点上都可用。

Q2 当拥有三个节点并想要使用

host port
部署四个 pod 副本时会发生什么?

A 如果您有 3 个节点,想要部署 4 个 pod 副本,则只会调度 3 个,1 个 pod 将保持 Pending。

© www.soinside.com 2019 - 2024. All rights reserved.