NodePort、HostPort和集群IP的区别
Posted
技术标签:
【中文标题】NodePort、HostPort和集群IP的区别【英文标题】:Difference between NodePort, HostPort and Cluster IP 【发布时间】:2018-11-15 11:11:53 【问题描述】:在部署新工作负载时,Rancher 2 在“端口”部分提供了 4 个选项:
节点端口 主机端口 集群 IP 第 4 层负载均衡器有什么区别?尤其是 NodePort、HostPort 和 Cluster IP 之间?
【问题讨论】:
【参考方案1】:HostPort(运行 pod 的节点): 类似于 docker,这将在运行 pod 的节点上打开一个端口(这允许您打开主机上的 80 端口)。但是,这很容易设置运行:
除非绝对必要,否则不要为 Pod 指定 hostPort。当您将 Pod 绑定到 hostPort 时,它会限制 Pod 可以调度的位置数量,因为每个组合都必须是唯一的。如果您没有明确指定 hostIP 和协议,Kubernetes 将使用 0.0.0.0 作为默认 hostIP 和 TCP 作为默认协议。 kubernetes.io
NodePort(在每个节点上):仅限于端口 30,000 到 ~33,000 之间的端口。这通常只在与外部负载均衡器结合使用时才有意义(如果您想在端口 80 上发布 Web 应用程序)
如果您明确需要在节点上公开 Pod 的端口,请考虑在使用 hostPort 之前使用 NodePort 服务。 kubernetes.io
集群 IP(仅限内部):正如描述所述,这将打开一个端口,该端口仅可用于在同一集群中运行的内部应用程序。使用此选项的服务可通过内部 cluster-ip 访问。
【讨论】:
【参考方案2】:Host Port |
Node Port |
Cluster IP |
---|---|---|
When a pod is using a hostPort , a connection to the node’s port is forwarded directly to the pod running on that node
|
With a NodePort service, a connection to the node’s port is forwarded to a randomly selected pod (possibly on another node ) |
Exposes the Service on an internal IP in the cluster. This type makes the Service only reachable from within the cluster. |
pods using a hostPort , the node’s port is only bound on nodes that run such pods |
NodePort services bind the port on all nodes, even on those that don’t run such a pod |
NA |
The hostPort feature is primarily used for exposing system services, which are deployed to every node using DaemonSets
|
NA | NA |
一般
问:当多个 Pod 在同一个节点上运行 NodePort 时会发生什么?
答:使用NodePort
,无论您有一个还是多个节点,端口都可以在每个节点上使用。
【讨论】:
以上是关于NodePort、HostPort和集群IP的区别的主要内容,如果未能解决你的问题,请参考以下文章