当我的应用程序部署在 Kubernetes 上时,其吞吐量周期性下降的原因可能是什么?

当我的应用程序部署在 Kubernetes 上时,其吞吐量周期性下降的原因可能是什么?

我有多个微服务通过网络相互通信。当这些微服务部署在 Kubernetes 上时,我的应用程序在负载测试中会经历吞吐量周期性下降,其中我将其中一个微服务固定到 CPU 的一个核心上,并将其饱和到 100%。请注意,所有 pod 都位于同一节点上。时间序列吞吐量图如下: 负载测试进行 10 分钟时上述设置的时间序列吞吐量

我尝试了 3 种设置:

  1. 在裸机上运行微服务应用程序,并通过本地主机进行通信
  2. 在不同的 Pod 上运行微服务,但使用主机网络,但 Pod 位于同一节点上
  3. 在不同的 Pod 上运行微服务,但没有主机网络,但 Pod 位于同一节点上

第一种情况下的吞吐量最高。第二种情况下,吞吐量几乎是第一种情况的 95%,这是可以接受的。但在第三种情况下,我看到吞吐量每隔几秒钟就会周期性下降。 以上三种情况的吞吐量比较

这可能是什么原因?是不是队列已满,还是配置问题?

注意:微服务是使用 C++ 和 cpprestsdk 构建的简单客户端服务器应用程序,并使用 redis 作为数据库。这些图像具有 ubuntu 的基本图像。

集群信息: Kubernetes 版本:1.26.3 所用云:Bare-Metal 安装方法:kubeadm 主机操作系统:Ubuntu 20.02 CNI:Calico

答案1

您是否在与裸机设置相同的硬件上运行 Kubernetes?

我建议关注本教程并从磁盘 I/O 和其他节点指标中获取准确读数。

相关内容