带有端口转发的 Kubernetes 服务无法实现负载平衡

kek*_*112 2 deployment kubernetes kubectl kind

我现在正忙着写 K8s 来写我的硕士论文。为此,我在 KindD 的帮助下启动了一个 K8s 集群。我还开发了一个小型 Flask REST API,它将回显 ENV var。现在我启动了 3 个服务,其中包含 Flask 应用程序的多个 Pod,并且它们正在互相调用。为了更好地理解,我有一个 hello svc、一个 world 服务和一个 world2 svc。到目前为止,一切都很好。我已经成功部署了它们,现在我想端口转发 hello svc。

kubectl --namespace test port-forward svc/hello 30000
Run Code Online (Sandbox Code Playgroud)

这工作正常,但一旦我启动 JMeter 应用程序来测试负载平衡功能,就会发生一些奇怪的事情。正如您在 grafana 仪表板中看到的那样,其他服务正在愉快地对流量进行负载平衡,但端口转发的 svc 正在将其所有流量发送到一个 hello pod。

这是我的部署: deployment.yml

我错过了什么吗?或者我错误地部署了我的应用程序?

提前致谢!

在此输入图像描述

Arg*_*dhu 5

端口转发仅允许出于方便目的使用服务。在幕后直接连接到单个 Pod。如果此 Pod 死亡,连接将被断开。端口转发中没有负载平衡。选择由服务选择的一个 Pod,并且在端口转发命令的整个生命周期内将所有流量转发到那里。如果您需要通过 JMeter 测试负载平衡,我建议使用NodePort类型服务在 kubernetes 集群之外。