Rancher 2 在部署新工作负载时在“端口”部分提供了 4 个选项:
有什么区别?尤其是 NodePort、HostPort 和 Cluster IP 之间?
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 访问。
|
|
|
---|---|---|
当 使用 时,与节点端口的连接将直接转发到在该
上运行的 node |
通过 服务,到节点端口的连接将转发到随机选择的 (可能在另一个 ) |
在集群中的 上公开 。这种类型使得服务只能从集群内部访问。 |
使用 的pod,节点的端口仅绑定在运行此类pod的节点上 |
服务将端口绑定在所有节点上,即使在那些不运行此类 pod 的节点上 |
不适用 |
hostPort 功能主要用于暴露系统服务,使用
| 不适用 | 不适用 |
一般询问问题
Q1: 当许多 Pod 在具有 NodePort 的同一节点上运行时会发生什么?
A: 使用
NodePort
,无论您有一个还是多个节点,端口在每个节点上都可用。
Q2 当拥有三个节点并想要使用
host port
部署四个 pod 副本时会发生什么?
A 如果您有 3 个节点,想要部署 4 个 pod 副本,则只会调度 3 个,1 个 pod 将保持 Pending。