参数配置
kube-apiserver 参数配置
Rate Limit
http2-max-streams-per-connection
服务器为客户端提供的 HTTP/2 连接中最大流数的限制,零表示使用 GoLang 的默认值(250)。这个参数涉及到一个安全漏洞和连接数,连接数也会影响 kube-apiserver 内存。并非只有 kube-apiserver 暴露了这个参数,其他组件对外暴露 API 的同样也暴露了这个参数
kube-apiserver 早期为 MaxConcurrentStreams
设置了默认值 250,并且暴露了参数可以在外部修改,而在 v1.29 的发布中,将其默认值修改为了 100,同时 backport 回了从 v1.25 及之后的所有的版本,这个修改和 golang 的安全漏洞 CVE-2023-44487 and CVE-2023-39325 有关
访问 kube-apiserver 时的客户端限流设置,尤其注意 kube-scheduler,这两个值会影响 binding 操作,进而影响到调度吞吐
enable-priority-and-fairness
如果为 true 且启用了 APIPriorityAndFairness
特性门控, 则使用增强的处理程序替换 max-in-flight 处理程序, 以便根据优先级和公平性完成排队和调度
如果 --enable-priority-and-fairness
为 true,那么 --max-requests-inflight
和 --max-mutating-requests-inflight
的和将确定服务器的总并发限制(必须是正数)
该值限制同时运行的变更类型请求的个数上限,0 表示无限制
该值限制同时运行的非变更类型请求的个数上限,0 表示无限制
Reliability
etcd 服务器针对每个资源的重载设置,以逗号分隔。单个替代格式:组/资源#服务器(group/resource#servers), 其中服务器是 URL,以分号分隔。注意,此选项仅适用于编译进此服务器二进制文件的资源
生产环境建议大规模集群中通过此参数把 event 拆到单独的 etcd 中存储
为防止 HTTP/2 客户端卡在单个 API 服务器上,随机关闭某连接(GOAWAY)。其原理是随机给 HTTP/2 客户端发送 GOAWAY 帧,客户端收到后如果有新的请求,则会创建新的连接,而不会继续复用之前的连接,客户端的其他运行中请求不会受到影响。新连接被负载均衡后可能会与其他 API 服务器开始通信。此参数设置将被发送 GOAWAY 指令的请求的比例。只有一个 API 服务器或不使用负载均衡器的集群不应启用此特性。最小值为 0(关闭),最大值为 0.02(1/50 请求)
表示处理程序在请求超时前,必须保持连接处于打开状态的最小秒数。当前只对监听(Watch)请求的处理程序有效。如果是通过 informer 发起的 Watch 请求,默认 5m ~ 10m 的超时时间
表示处理程序在超时之前必须保持打开请求的持续时间。这是请求的默认请求超时,但对于 Watch 请求,会被 --min-request-timeout
标志覆盖。如果在 timeout 时间内没有执行完 List 请求,会触发 informer 的 Relist 操作,严重影响 kube-apiserver 内存,甚至 OOM
在 API 服务器中启用 watch cache
other
启用针对 API 服务器的安全端口的匿名请求。未被其他身份认证方法拒绝的请求被当做匿名请求。匿名请求的用户名为 system:anonymous
, 用户组名为 system:unauthenticated
--default-not-ready-toleration-seconds
# default 300
--default-unreachable-toleration-seconds
# default 300
对污点 NotReady:NoExecute
和 Unreachable:NoExecute
的容忍时长(以秒计)。开启 DefaultTolerationSeconds
feature-gate 的情况下,上述两个容忍度之一会被按需添加到尚未具有此容忍度的每个 pod 中。在节点出现上述异常时会影响其上的 Pod 的运行情况