Kubernetes NodePort和LoadBalancer之间的区别?

Kubernetes NodePort和LoadBalancer之间的区别?,kubernetes,Kubernetes,我刚刚开始学习Kubernetes,我对NodePort和LoadBalancer服务类型之间的区别感到困惑 我理解的区别是LoadBalancer不支持UDP,但除此之外,无论何时创建服务Nodeport或LoadBalancer,我们都会得到服务IP和端口、Nodeport和端点 来自Kubernetes文档: 节点端口:在拥有集群内部IP的基础上,公开服务 在群集每个节点上的端口上(每个节点上的端口相同)。 您可以通过任何节点ip:NodePort 地址 负载平衡器:在拥有集群内部IP和

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

我理解的区别是LoadBalancer不支持UDP,但除此之外,无论何时创建服务
Nodeport
LoadBalancer
,我们都会得到服务IP和端口、Nodeport和端点

来自Kubernetes文档:

节点端口:在拥有集群内部IP的基础上,公开服务 在群集每个节点上的端口上(每个节点上的端口相同)。 您可以通过任何节点ip:NodePort 地址

负载平衡器:在拥有集群内部IP和 在NodePort上公开服务也可以向云提供商请求负载 转发到作为节点IP:NodePort公开的服务的平衡器 对于每个节点

所以,我将始终访问NodeIP:NodePort上的服务。 我的理解是,每当我们访问node:NodePort时,kubeproxy将拦截请求并将其转发到相应的pod

关于LoadBalancer提到的另一件事是,我们可以有一个外部LB,它将在节点之间创建LB。是什么阻止我们为创建为节点端口的服务放置LB


我真的很困惑。大多数文档或教程只讨论负载平衡器服务,因此我在internet上找不到太多内容。

没有任何内容阻止您在节点前面放置外部负载平衡器并使用NodePort选项

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

我还不知道支持哪些云提供商,但我已经看到它在ComputeEngine和OpenStack上运行

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

节点端口
负载平衡器
通过创建一个
NodePort
服务,您是在告诉Kubernetes在其所有节点上保留一个端口,并将传入连接转发到属于该服务的POD。 群集中的每个节点上都没有带
负载平衡器的此类端口保留。
节点端口
服务不仅可以通过服务的内部
群集IP
访问,还可以通过任何节点的IP和保留节点端口访问。 只能通过
负载平衡器
公共IP访问 指定端口不是必需的。如果忽略它,Kubernetes将选择一个随机端口(默认范围30000-32767)。
负载平衡器
将拥有自己唯一的、可公开访问的IP地址,并将所有连接重定向到您的服务 如果只将客户端指向第一个节点,当该节点出现故障时,客户端将无法再访问该服务 在节点前面使用
负载平衡器
,以确保在所有正常节点之间分发请求,并且永远不会将请求发送到此时处于脱机状态的节点。