kubernetes NodePort和LoadBalancer的区别

hgtggwj0  于 5个月前  发布在  Kubernetes
关注(0)|答案(3)|浏览(65)

我刚刚开始使用Kubernetes,我对NodePort和LoadBalancer服务类型之间的区别感到困惑。
我理解的区别是LoadBalancer不支持UDP,但除此之外,每当我们创建一个服务时,无论是Nodeport还是Loadbalancer,我们都会得到一个服务IP和端口,一个NodePort和端点。
来自Kubernetes文档:

**NodePort:**在拥有集群内部IP的基础上,将服务暴露在集群每个节点的端口上(每个节点上的端口相同),您可以在任意 NodeIP:NodePort 地址上联系服务。
**LoadBalancer:**除了拥有集群内部IP和在NodePort上暴露服务之外,还可以向云提供商请求负载均衡器,该负载均衡器会转发到每个Node暴露为 NodeIP:NodePort 的服务。

所以,我会一直访问NodeIP:NodePort上的服务。我的理解是,每当我们访问node:NodePort时,kubeproxy都会拦截请求并将其转发到相应的pod。
关于LoadBalancer提到的另一件事是,我们可以有一个外部LB,它将在节点之间进行LB。是什么阻止我们为作为节点端口创建的服务放置LB?
我真的很困惑。大多数的文档或教程只谈论LoadBalancer服务,因此我在互联网上找不到太多。

kxkpmulp

kxkpmulp1#

没有什么可以阻止您在节点前放置外部负载均衡器并使用NodePort选项。
LoadBalancer选项仅用于在后台自动向您的云提供商额外请求新的软件LB示例。
我还不知道支持哪些云提供商,但我看到它已经在计算引擎和OpenStack上工作了。

kyxcudwk

kyxcudwk2#

Node端口和负载均衡服务的区别。

| 第一个月|Load balancer个|
| --|--|
| 通过创建一个NodePort服务,您可以让Kubernetes在其所有节点上保留一个端口,并将传入的连接转发到服务的一部分Pod。|在群集中的每个节点上,Load balancer没有这样的端口保留。|
| NodePort服务不仅可以通过服务的内部cluster IP访问,还可以通过任何节点的IP和保留的节点端口访问。|只能通过Load balancer公共IP访问|
| 不强制指定端口。如果忽略端口,Kubernetes将随机选择一个端口(默认范围为30000 - 32767)。|Load balancer将拥有自己唯一的、可公开访问的IP地址,并将所有连接重定向到您的服务|
| 如果只将客户端指向第一个节点,则当该节点出现故障时,客户端将无法再访问服务|在节点前使用Load balancer,以确保您将请求分散到所有健康的节点,并且永远不会将它们发送到当时离线的节点。|

jtw3ybtb

jtw3ybtb3#

NodePort只是在你的工作节点上打开一个端口,并将连接扩展到标签所选择的Pod。
这允许您配置自己的LB来访问在POD上运行的应用程序。

Client1 ----> LB|VirtualIP:80 -------> NODE1:300001

Client2 ----> LB|VirtualIP:80 -------> NODE2:300001

Client3 ----> LB|VirtualIP:80 -------> NODE3:300001

字符串
这里LB配置了循环调度。当请求到来时,它会将其转发到相应的服务器。在我们的例子中,它将是在工作节点上运行的POD。

相关问题