【发布时间】:2019-11-15 20:58:16
【问题描述】:
我在 microk8s 上建立了一个 k8s 集群,并将我的应用程序移植到它上面。我还添加了一个水平自动缩放器,它根据 cpu 负载添加 pod。自动缩放器工作正常,当负载超出目标时它会添加 pod,当我在一段时间后移除负载时,它会杀死 pod。
问题是我在同一时刻注意到自动缩放器正在创建新 pod,其中一些请求失败:
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 502
java.io.IOException: Server returned HTTP response code: 502 for URL: http://10.203.101.61/gateway/compile
POST Response Code : 502
java.io.IOException: Server returned HTTP response code: 502 for URL: http://10.203.101.61/gateway/compile
POST Response Code : 200
POST Response Code : 502
java.io.IOException: Server returned HTTP response code: 502 for URL: http://10.203.101.61/gateway/compile
POST Response Code : 502
java.io.IOException: Server returned HTTP response code: 502 for URL: http://10.203.101.61/gateway/compile
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
POST Response Code : 200
我想知道这是什么原因以及如何解决?
更新: 我认为最好向您提供有关我的设置的更多信息:
流量来自集群外部,但 k8s 节点和生成请求的程序都在一台机器上,因此不存在网络问题。有一个自定义的 nginx 组件,它不做负载平衡,只是充当反向代理并将流量发送到相应的服务。
我进行了另一项测试,该测试为我提供了更多信息。我运行了相同的基准测试,但这次我没有将请求发送到反向代理 (nginx),而是使用该特定服务的 IP 地址,并且在自动缩放器完成其工作并启动多个 pod 时我没有失败的请求。不知道是Nginx还是k8s的问题?
【问题讨论】:
-
您是否对您的部署进行了一些准备和活跃度探测?流量是内部流量还是通过入口来自外部网络?
-
不,我没有活性探针。流量来自集群外部,但 k8s 节点和生成请求的程序都在一台机器上,因此不存在网络问题。有一个自定义的 nginx 组件不做负载平衡,只是充当反向代理并将流量发送到相应的服务。
标签: kubernetes autoscaling kubernetes-pod horizontal-scaling