Kubernetes:NodePort和LoadBalancer之间的区别

Jar*_*ian 37 kubernetes

我刚开始使用Kubernetes,我对NodePort和LoadBalancer服务类型之间的区别感到困惑.

我理解的差异是LoadBalancer不支持UDP,但除此之外,无论何时我们创建服务nodeport或loadbalancer,我们都会获得服务IP和端口,NodePort和端点.

来自Kubernetes文档:

NodePort:在拥有集群内部IP的基础上,在集群的每个节点(每个节点上的相同端口)上的端口上公开服务.您将能够在任何NodeIP:NodePort 地址上联系该服务.

LoadBalancer:除了拥有集群内部IP并在NodePort上公开服务之外,还要求云提供商提供负载均衡器,该负载均衡器转发给作为NodeIP的服务公开: 每个节点的NodePort.

所以,我将始终访问nodeip:nodeport上的服务.我的理解是,每当我们访问节点:nodeport时,kubeproxy将拦截请求并将其转发到相应的pod.

关于LoadBalancer的另一件事是我们可以有一个外部LB,它将在节点之间产生LB. 什么阻止我们为创建为nodeport的服务放置LB?

我真的很困惑.大多数文档或教程仅讨论LoadBalancer服务,因此我在互联网上找不到太多东西.

如果有人能清除我的怀疑,请感谢.

谢谢

Zah*_*lex 15

没有什么可以阻止您在节点前放置外部负载平衡器并使用NodePort选项.

LoadBalancer选项仅用于在后台自动向云提供商请求新的软件LB实例.

我还不知道支持哪些云提供商,但我看到它已经在Compute Engine和OpenStack上工作了.

  • 感谢您的评论。我不了解“自动”部分。无论我阅读或观看过什么教程,在每个教程中,节点IP都会放入服务公共IP参数中,然后配置到LB ex中。Nginx,每个人都在演示。 (3认同)
  • 许多云提供商都有可能将已经在其网络级别上的流量软件LB到您的节点.通过将服务类型设置为LoadBalancer,可以通过Kubernetes自动激活此功能.例如:•Google:cloud.google.com/compute/docs/load-balancing•亚马逊:aws.amazon.com/de/elasticloadbalancing•OpenStack:wiki.openstack.org/wiki/Neutron/LBaaS (3认同)
  • 我不确定这如何回答问题。Nodeport服务不适用于生产集群,因为它们直接将节点上的端口暴露给外部流量。负载平衡器选项用于提供外部暴露点(IP地址),该暴露点可以将任何类型的流量路由到您的服务。 (2认同)

VKa*_*atz 5

\n

节点端口和负载均衡器服务之间的区别。

\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n
Node PortLoad balancer
通过创建NodePort服务,您可以说 Kubernetes 在其所有节点上保留一个端口,并将传入连接转发到属于该服务的 Pod。Load balancer集群中的每个节点上都没有此类端口预留。
NodePort不仅可以通过service\xe2\x80\x99s内部访问服务cluster IP,还可以通过任意节点\xe2\x80\x99s IP和保留的节点端口访问服务。只能通过Load balancer公共IP访问
指定端口不是\xe2\x80\x99t 必需的。如果省略,Kubernetes 将选择一个随机端口(默认范围 30000 - 32767)。Load balancer将拥有自己唯一的、可公开访问的 IP 地址,并将所有连接重定向到您的服务
如果您仅将客户端指向第一个节点,当该节点发生故障时,您的客户端将无法再访问该服务Load balancer节点前面,以确保您\xe2\x80\x99在所有健康节点上传播请求,并且永远不会将它们发送到当时\xe2\x80\x99离线的节点。
\n