我有多个微服务通过网络相互通信。当这些微服务部署在 Kubernetes 上时,我的应用程序在负载测试中会经历吞吐量周期性下降,其中我将其中一个微服务固定到 CPU 的一个核心上,并将其饱和到 100%。请注意,所有 pod 都位于同一节点上。时间序列吞吐量图如下: 负载测试进行 10 分钟时上述设置的时间序列吞吐量
我尝试了 3 种设置:
- 在裸机上运行微服务应用程序,并通过本地主机进行通信
- 在不同的 Pod 上运行微服务,但使用主机网络,但 Pod 位于同一节点上
- 在不同的 Pod 上运行微服务,但没有主机网络,但 Pod 位于同一节点上
第一种情况下的吞吐量最高。第二种情况下,吞吐量几乎是第一种情况的 95%,这是可以接受的。但在第三种情况下,我看到吞吐量每隔几秒钟就会周期性下降。 以上三种情况的吞吐量比较
这可能是什么原因?是不是队列已满,还是配置问题?
注意:微服务是使用 C++ 和 cpprestsdk 构建的简单客户端服务器应用程序,并使用 redis 作为数据库。这些图像具有 ubuntu 的基本图像。
集群信息: Kubernetes 版本:1.26.3 所用云:Bare-Metal 安装方法:kubeadm 主机操作系统:Ubuntu 20.02 CNI:Calico
答案1
您是否在与裸机设置相同的硬件上运行 Kubernetes?
我建议关注本教程并从磁盘 I/O 和其他节点指标中获取准确读数。