Docker 关于Kubernetes集群中负载平衡的查询

Docker 关于Kubernetes集群中负载平衡的查询,docker,kubernetes,load-balancing,Docker,Kubernetes,Load Balancing,我刚开始学习Kubernetes,对Kubernetes的负载平衡方法有一些疑问,但在Kubernetes文档中找不到明确的答案 首先,假设我们创建了一个部署“iis”,并将其扩展到3个副本。现在,如果不创建服务,我们如何访问这些端点 现在,我们已经使用ClusterIP为此部署创建了一个服务(有3个副本),因此它只在集群中公开。现在,服务负载将如何平衡集群内该服务的流量?它使用循环还是随机选择端点?根据kubernetes的文档,有两个服务代理,用户空间或iptables,我如何知道我的服务正

我刚开始学习Kubernetes,对Kubernetes的负载平衡方法有一些疑问,但在Kubernetes文档中找不到明确的答案

首先,假设我们创建了一个部署“iis”,并将其扩展到3个副本。现在,如果不创建服务,我们如何访问这些端点

现在,我们已经使用ClusterIP为此部署创建了一个服务(有3个副本),因此它只在集群中公开。现在,服务负载将如何平衡集群内该服务的流量?它使用循环还是随机选择端点?根据kubernetes的文档,有两个服务代理,用户空间或iptables,我如何知道我的服务正在使用哪一个

接下来,我们使用LoadBalancer公开了该服务。它在云提供商上创建并使用负载平衡器。我的问题是,这个外部负载平衡器如何平衡到POD的流量?它是平衡到服务的流量并将其重定向到端点,还是直接平衡到端点(POD)的流量?另外,在这种负载均衡器的情况下,到该服务的内部流量(来自集群内部)是如何实现负载平衡的

请尽量给出详细的答案

首先,假设我们创建了一个部署“iis”,并将其扩展到3个副本。现在,如果不创建服务,我们如何访问这些端点

除非您有一个带外解决方案(如您注册POD IP的标准负载平衡器),否则您无法。。这些服务可以简化吊舱之间的连接。使用它们

现在,服务负载将如何平衡集群内该服务的流量

为了理解这一点,有必要了解Kubernetes中的服务是如何工作的

服务由kube代理处理。Kube proxy(现在默认情况下)创建iptables规则,看起来有点像这样:

-A KUBE-SERVICES ! -s 192.168.0.0/16 -d <svc-ip>/32 -p tcp -m comment --comment "namespace/service-name: cluster IP" -m tcp --dport svc-port -j KUBE-MARK-MASQ
-A KUBE-SVC-AGR3D4D4FQNH4O33 -m comment --comment "default/redis-slave:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-25QOXGEMBWAVOAG5
-A KUBE-SVC-GYQQTB6TY565JPRW -m comment --comment "default/frontend:" -m statistic --mode random --probability 0.33332999982 -j KUBE-SEP-JZXZFA7HRDMGR3BA
-A KUBE-SVC-GYQQTB6TY565JPRW -m comment --comment "default/frontend:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-ZW5YSZGA33MN3O6G
所以答案是,它是随机的,带有一些概率权重。关于概率如何加权的更透彻的解释可以在下面的例子中看到

根据kubernetes的文档,有两个服务代理,用户空间或iptables,我如何知道我的服务正在使用哪一个

同样,这由kube代理决定,并在kube代理启动时决定。这是kube代理进程上的命令行标志。默认情况下,它将使用iptables,强烈建议您坚持使用它,除非您知道自己在做什么

我的问题是,这个外部负载平衡器如何平衡到POD的流量

这完全取决于您的云提供商和您选择的LoadBalance。 LoadBalancer服务类型是什么?它在节点端口上公开服务,然后将LoadBalancer上的外部端口映射回该端口。 LoadBalancer类型的所有不同之处在于,将为服务提供服务的节点IP注册到外部提供者的负载均衡器(例如:ELB)中,而不是注册到内部clusterIP服务中。我建议您阅读云提供商的文档来确定这一点

另外,在这种负载均衡器的情况下,到该服务的内部流量(来自集群内部)是如何实现负载平衡的


同样,请参阅云提供商的文档

根据azure负载平衡器的描述,“您可以将负载平衡器配置为跨虚拟机负载平衡传入流量。”,如果负载平衡器只是将流量重定向到其中一个节点上的NodePort,那么在该节点上运行的kube代理是选择在其自己的空间内运行的pod,还是从在不同节点上运行的所有可用pod中选择节点?azure负载平衡器只是将流量重定向到服务端口,并且kube代理谁决定pod的选择那么负载均衡器的目的是什么?实际的负载平衡仍然由kube代理完成。