如何在Kubernetes负载平衡器中响应503错误码
我的Google Kubernetes引擎集群中有一个由Google云负载平衡器支持的入口。我设置了一个自动缩放器,可以根据CPU使用情况缩放部署副本的数量。假设我已将CPU阈值设置为50% 当出现突发请求时,CPU使用率将达到100%。autoscaler需要几分钟来实现高负载、创建更多的POD、在必要时创建新节点以及通过运行状况检查。在此扩展期间,由于超时,部分或大部分请求失败,出现502错误。如果服务器负载过重,我宁愿立即返回503错误代码,而不是在30秒超时后返回502错误代码 是否可以让负载平衡器将流量直接传输到CPU使用率最低的POD?如果没有一个POD的CPU使用率低于某个阈值(例如80%),是否可能返回503错误代码如何在Kubernetes负载平衡器中响应503错误码,kubernetes,google-cloud-platform,load-balancing,Kubernetes,Google Cloud Platform,Load Balancing,我的Google Kubernetes引擎集群中有一个由Google云负载平衡器支持的入口。我设置了一个自动缩放器,可以根据CPU使用情况缩放部署副本的数量。假设我已将CPU阈值设置为50% 当出现突发请求时,CPU使用率将达到100%。autoscaler需要几分钟来实现高负载、创建更多的POD、在必要时创建新节点以及通过运行状况检查。在此扩展期间,由于超时,部分或大部分请求失败,出现502错误。如果服务器负载过重,我宁愿立即返回503错误代码,而不是在30秒超时后返回502错误代码 是否可以
处理大流量突发的标准做法是什么?在Kubernetes中,我应该如何着手解决这个问题?您描述的第一个问题(服务503)称为“减载”。通常,应用程序有责任说:“哎呀,我超载了,503,慢下来。”。如果您将此责任转移给客户,则其反应可能太慢,无法为您提供任何合理的保护—其数据将始终处于落后状态。从系统可靠性的角度来看,最好将此逻辑保留在服务器应用程序中
第二个问题是CPU感知负载平衡。解决此问题的一种可能方法称为加权循环-它类似于常规循环,但更喜欢负载较少的节点。如果在Kubernetes中安装,则可以从中进行选择。其中之一是-它依赖于飞行中的请求数量,而不是直接依赖于CPU,但是如果所有请求的CPU成本都差不多,那么它可能是CPU负载的一个很好的代理。还有一个可能的解决方案,就是使用断路器。您可以配置向您的服务发出的并发请求的数量,或者您也可以使用异常值检测,它将检测您的服务失败,并基于此改进您的用户体验