跳转至

参数配置

kube-apiserver 参数配置

Rate Limit

http2-max-streams-per-connection

--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-api-burst
# default 400

--kube-api-qps
# default 200

访问 kube-apiserver 时的客户端限流设置,尤其注意 kube-scheduler,这两个值会影响 binding 操作,进而影响到调度吞吐

enable-priority-and-fairness

--enable-priority-and-fairness
# default true

如果为 true 且启用了 APIPriorityAndFairness 特性门控, 则使用增强的处理程序替换 max-in-flight 处理程序, 以便根据优先级和公平性完成排队和调度

如果 --enable-priority-and-fairness 为 true,那么 --max-requests-inflight--max-mutating-requests-inflight 的和将确定服务器的总并发限制(必须是正数)

--max-mutating-requests-inflight
# default 200

该值限制同时运行的变更类型请求的个数上限,0 表示无限制

--max-requests-inflight
# default 400

该值限制同时运行的非变更类型请求的个数上限,0 表示无限制

Reliability

--etcd-servers-overrides

etcd 服务器针对每个资源的重载设置,以逗号分隔。单个替代格式:组/资源#服务器(group/resource#servers), 其中服务器是 URL,以分号分隔。注意,此选项仅适用于编译进此服务器二进制文件的资源

生产环境建议大规模集群中通过此参数把 event 拆到单独的 etcd 中存储

--goaway-chance

为防止 HTTP/2 客户端卡在单个 API 服务器上,随机关闭某连接(GOAWAY)。其原理是随机给 HTTP/2 客户端发送 GOAWAY 帧,客户端收到后如果有新的请求,则会创建新的连接,而不会继续复用之前的连接,客户端的其他运行中请求不会受到影响。新连接被负载均衡后可能会与其他 API 服务器开始通信。此参数设置将被发送 GOAWAY 指令的请求的比例。只有一个 API 服务器或不使用负载均衡器的集群不应启用此特性。最小值为 0(关闭),最大值为 0.02(1/50 请求)

--min-request-timeout
# default 1800

表示处理程序在请求超时前,必须保持连接处于打开状态的最小秒数。当前只对监听(Watch)请求的处理程序有效。如果是通过 informer 发起的 Watch 请求,默认 5m ~ 10m 的超时时间

--request-timeout
# default 1m

表示处理程序在超时之前必须保持打开请求的持续时间。这是请求的默认请求超时,但对于 Watch 请求,会被 --min-request-timeout 标志覆盖。如果在 timeout 时间内没有执行完 List 请求,会触发 informer 的 Relist 操作,严重影响 kube-apiserver 内存,甚至 OOM

--watch-cache
# default true

在 API 服务器中启用 watch cache

other

--anonymous-auth
# default true

启用针对 API 服务器的安全端口的匿名请求。未被其他身份认证方法拒绝的请求被当做匿名请求。匿名请求的用户名为 system:anonymous, 用户组名为 system:unauthenticated

--default-not-ready-toleration-seconds
# default 300

--default-unreachable-toleration-seconds
# default 300

对污点 NotReady:NoExecuteUnreachable:NoExecute 的容忍时长(以秒计)。开启 DefaultTolerationSeconds feature-gate 的情况下,上述两个容忍度之一会被按需添加到尚未具有此容忍度的每个 pod 中。在节点出现上述异常时会影响其上的 Pod 的运行情况