kubernetes - 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: {}
解决方案
我找到了答案。我部署了一个应用程序,该应用程序将通过服务调用端点并取回应答的节点。我注意到,在 30 秒左右的时间范围内,只有同一个节点会回答,然后它会切换到另一个节点,等待另一个时间范围,然后再返回。这看起来很奇怪,但似乎是服务负载平衡的行为。在一天结束时,如果您有一致的请求数量,您将拥有平衡的负载。我们的请求配置文件是在短时间内“爆发”的请求,所以这就是我们得到不平衡负载的原因。
推荐阅读
- operating-system - 如何找到虚拟内存中翻译表的数量?
- r - 更改风险表图例的字体大小
- arrays - 在 HLSL 中,如何设置数组的所有值?
- asp.net-core - 启动时如何将敏感数据传递给IConfiguration接口?
- c# - C# 委托(和字符串)的不变性是如何在底层实现的?
- react-native - 嵌套地图函数 React Native 中的错误
- sql-server - 我可以在课堂上创建单身人士吗?
- android - 打算在特定排行榜之间进行选择
- azure - Azure appservices 预热永远持续
- python - 有没有办法用 cv2 分离和克隆图像区域?