APIServer goaway参数使用

容器与中间件容器服务技术服务知识库
问题描述

APIserver使用负载均衡代理导致负载不均衡。

问题分析

由于 API Server 和 client 是使用 HTTP2 协议连接,HTTP2 的多个请求都会复用底层的同一个 TCP 连接并且长时间不断开。而在 API Server 发生 RollingUpdate 或者某个 API Server 实例重启时,又或者 API Server 使用 MaxSurge=Replica 方式升级后, Load Balance 没有及时的将所有副本挂载完毕,client 能敏感的感知到连接的断开并立刻发起新的请求,这时候很容易引起较后启动(或者较后挂载 Load Balance)的 API Server 没有一点流量,并且可能永远都得不到负载均衡。

问题解决

基于上述背景,K8S 增加了一种通用的 HTTP filter,API Server 概率性(建议 1/1000)的随机关闭和 Client 的链接(向 Client 发送 GOAWAY)。关闭是优雅的关闭,不会影响 API Server 和 client 正在进行中的长时间请求(如 Watch 等),但是收到 GOAWAY 之后,client 新的请求就会重新建立一个新的 TCP 链接去访问 API Server 从而能让 Load Balance 再做一次负载均衡。 带有单个apiserver的集群或不使用负载平衡器的集群不应该启用此功能。 最小值为0(关闭),最大值为0.02(1/50请求);建议从.001(1/1000)开始。 1.修改API Server配置(保存会自动重启)

$ vim /etc/kubernetes/manifests/kube-apiserver.yaml
    - --goaway-chance=0.001
参考链接

[1] https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-apiserver/ 如果您有其他问题,欢迎您联系火山引擎技术支持服务

132
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论