Kubernetes 集群内部负载均衡
Kubernetes cluster internal load balancing
尝试使用 Kubernetes (v1.3.2) 我正在检查集群内负载均衡调用的能力(3 个本地 CentOS 7 虚拟机)。
如果我正确理解 http://kubernetes.io/docs/user-guide/services/“虚拟 IP 和服务代理”段落中的文档,并且正如我在测试中看到的那样,负载平衡是按节点 (VM) 进行的。也就是说,如果我有一个由 3 个虚拟机组成的集群并部署了一个包含 6 pods(每个虚拟机 2 个)的服务,负载平衡将仅在同一虚拟机的 pods 之间进行,这在某种程度上令人失望。
至少这是我在测试中看到的:使用服务的 ClusterIP 从集群内调用服务,将在发送调用的同一 VM 中的 2 pods 之间实现负载平衡。
(顺便说一句,从集群外调用服务(使用 NodePort)时也是如此,然后请求将在驻留在作为请求目标 IP 地址的 VM 中的 2 pods 之间进行负载平衡。
以上是否正确?
如果是,我如何在所有 6 个副本之间进行内部集群调用负载平衡? (我必须为此使用像 nginx 这样的负载平衡器吗?)
不对,说法不正确。负载平衡应该跨节点 (VM)。这个 demo 证明了这一点。我在 gce 上有 3 个节点的 k8s 集群上有 运行 这个演示。它首先创建一个有 5 个后端 pods 的服务,然后它通过 ssh 进入一个 gce 节点并访问 service.ClusterIP,流量被负载均衡到所有 5 个 pods。
我看到您还有一个问题 "not unique ip per pod" 未解决,您似乎没有正确设置集群网络,这可能导致您观察到的情况。
在您的情况下,每个节点都将是 运行 服务的副本 - 并在节点之间实现负载平衡。
尝试使用 Kubernetes (v1.3.2) 我正在检查集群内负载均衡调用的能力(3 个本地 CentOS 7 虚拟机)。
如果我正确理解 http://kubernetes.io/docs/user-guide/services/“虚拟 IP 和服务代理”段落中的文档,并且正如我在测试中看到的那样,负载平衡是按节点 (VM) 进行的。也就是说,如果我有一个由 3 个虚拟机组成的集群并部署了一个包含 6 pods(每个虚拟机 2 个)的服务,负载平衡将仅在同一虚拟机的 pods 之间进行,这在某种程度上令人失望。
至少这是我在测试中看到的:使用服务的 ClusterIP 从集群内调用服务,将在发送调用的同一 VM 中的 2 pods 之间实现负载平衡。
(顺便说一句,从集群外调用服务(使用 NodePort)时也是如此,然后请求将在驻留在作为请求目标 IP 地址的 VM 中的 2 pods 之间进行负载平衡。
以上是否正确?
如果是,我如何在所有 6 个副本之间进行内部集群调用负载平衡? (我必须为此使用像 nginx 这样的负载平衡器吗?)
不对,说法不正确。负载平衡应该跨节点 (VM)。这个 demo 证明了这一点。我在 gce 上有 3 个节点的 k8s 集群上有 运行 这个演示。它首先创建一个有 5 个后端 pods 的服务,然后它通过 ssh 进入一个 gce 节点并访问 service.ClusterIP,流量被负载均衡到所有 5 个 pods。 我看到您还有一个问题 "not unique ip per pod" 未解决,您似乎没有正确设置集群网络,这可能导致您观察到的情况。
在您的情况下,每个节点都将是 运行 服务的副本 - 并在节点之间实现负载平衡。