首页 > 解决方案 > Kubernetes 服务在负载下没有公平地均衡负载

问题描述

我们在系统中运行导入时遇到问题。他有一个包含 6 个副本的 pod,它调用由 5 个副本 pod 支持的服务。尽管如此,我们的指标表明,在负载下,5 个 pod 中只有一个正在接收请求。我们正在使用 ClusterIP 服务来“路由”调用。

我们发现了这个,更具体地说是这篇文章,但尚不清楚他报告的问题是否仅与长期联系有关。

我们禁用了连接池,我们仍然面临负载下的这种不平衡行为。

我们已经没有替代品了,所以这是我的问题:对于我们拥有的 k8s 服务,这是一种已知的行为(限制吗?)?它记录在某处?

PS:此服务只能从集群内部访问。PS2:服务定义

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2019-05-16T16:29:46Z"
  name: my-service
  namespace: my-ns
  .....
spec:
  clusterIP: <MyIp>
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: <my-selector>
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

标签: kubernetes

解决方案


我找到了答案。我部署了一个应用程序,该应用程序将通过服务调用端点并取回应答的节点。我注意到,在 30 秒左右的时间范围内,只有同一个节点会回答,然后它会切换到另一个节点,等待另一个时间范围,然后再返回。这看起来很奇怪,但似乎是服务负载平衡的行为。在一天结束时,如果您有一致的请求数量,您将拥有平衡的负载。我们的请求配置文件是在短时间内“爆发”的请求,所以这就是我们得到不平衡负载的原因。


推荐阅读