运行skaffold dev时出现client side throttling错误如何解决?
报错触发原因
- 该报错是Kubernetes客户端(Skaffold底层依赖的client-go组件)的默认限流阈值被触发导致,并非Kubernetes服务端的优先级与公平性限流,日志内容也明确标注了
not priority and fairness。 - 你的微服务项目共需要部署14个deployment,以及关联的pod、replicaset等资源,本次运行
skaffold dev时,Skaffold需要短时间内发起大量Kubernetes API请求拉取资源状态,请求量超过了client-go默认的每秒5次QPS、峰值10次burst的限流阈值,因此触发了客户端限流等待逻辑。 - 也可能存在本地到集群的网络波动、延迟升高的情况,导致API请求响应变慢出现堆积,进一步触发现有限流规则。
可行修复方案
- 调整Skaffold配置文件的全局Kubernetes客户端限流参数,在
skaffold.yaml中添加如下配置,可根据项目部署的微服务数量灵活调高数值:
global: kubeClient: qps: 20 burst: 40
- 运行命令时临时指定限流参数,将执行命令修改为:
skaffold dev --kube-client-qps=20 --kube-client-burst=40 - 减少单次启动的服务数量,若无需同时运行所有微服务,可通过
-m参数指定仅启动需要的模块,降低API请求总量,示例命令:skaffold dev -m auth-service -m classes-service - 排查本地到Kubernetes集群的网络连接状态,排除网络延迟、丢包导致的请求堆积问题,也可尝试重新连接集群上下文后再次运行命令。
内容的提问来源于stack exchange,提问作者oliviaflexx
相关产品推荐
相关产品推荐

