K8s怎么调优APIServer的最大并发请求连接数

千丽大大_4198

千丽大大_4198

2026-11-01

960人浏览

原创

必须调整APIServer最大并发请求连接数,否则kubectl等关键命令将被直接拒绝;默认非变更/变更类请求上限分别为400和200,总承载仅600,远低于千节点生产需求。

k8s怎么调优apiserver的最大并发请求连接数

当Kubernetes集群节点数超过1000,或客户端频繁发起GET/POST请求导致apiserver响应变慢、出现429错误时,必须调整APIServer的最大并发请求连接数,否则关键运维命令(如kubectl get nodes)将被直接拒绝,且无排队缓冲。

确认当前限流参数值

登录任一master节点,执行:ps aux | grep kube-apiserver | grep -E "(max-requests-inflight|max-mutating-requests-inflight)"。若未显式指定这两个参数,则按默认值生效:非变更类请求上限为400,变更类请求上限为200。

注意:该命令输出中若含--runtime-config=但不含上述两个参数,即代表使用默认值——此时集群实际总并发承载能力仅为600,远低于千节点级生产环境所需。

修改启动参数并重启APIServer

方法一:静态Pod方式(推荐,适用于kubeadm部署)
编辑文件 /etc/kubernetes/manifests/kube-apiserver.yaml,在 spec.containers[0].command 列表中插入两行:

- --max-requests-inflight=4000
- --max-mutating-requests-inflight=2000

保存后,kubelet会自动滚动重启apiserver容器。等待约30秒,用kubectl get componentstatuses确认apiserver状态为Healthy。

方法二:systemd服务方式(适用于二进制部署)
编辑 /etc/systemd/system/kube-apiserver.service,在ExecStart=行末尾追加:--max-requests-inflight=4000 --max-mutating-requests-inflight=2000,然后执行:systemctl daemon-reload && systemctl restart kube-apiserver。

uk8s
uk8s

创建 UK8S Kubernetes 集群。通过 ucloud-cli 调用 API,自动获取 VPC/子网/版本/镜像,生成配置并创建集群。

下载

【必须验证】重启后立即执行curl -k -H "Authorization: Bearer $(cat /etc/kubernetes/admin.conf | sed -n 's/.*token: //p')" https://127.0.0.1:6443/healthz,返回200才表示apiserver已正常加载新参数并就绪;返回500或超时说明配置有误或证书失效,需回退检查。

按集群规模分级设置推荐值

第一步:评估当前集群负载类型
若集群中大量运行Operator、自定义控制器或CI/CD频繁调用API(如每秒数十次apply),属于高变更请求场景,应优先提升--max-mutating-requests-inflight;若以监控采集(Prometheus list endpoints)、日志轮询(fluentd watch pods)为主,则侧重提升--max-requests-inflight。

第二步:匹配节点规模与HA实例数
单master小集群(≤100节点):维持默认值即可;三节点HA集群(500–2000节点):--max-requests-inflight=3000,--max-mutating-requests-inflight=1500;五节点HA集群(2000–5000节点):--max-requests-inflight=4000,--max-mutating-requests-inflight=2000。

第三步:禁用不必要API以释放并发配额
在相同参数下,关闭未使用的API组能间接提升有效并发能力。例如,若未使用CRD的admissionregistration.k8s.io/v1beta1,在启动参数中加入:--runtime-config=admissionregistration.k8s.io/v1beta1=false。这不会影响v1版本功能,但可减少内部请求路由开销。

第四步:启用watch缓存降低真实inflight压力
追加参数:--watch-cache=true --watch-cache-sizes=events[10000];pods[5000];nodes[500]。watch缓存命中后不计入inflight计数,对LIST+WATCH混合负载效果显著——尤其在节点数超千时,pod列表缓存可减少约35%的etcd读请求。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

80

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

60

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

200

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

140

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

120

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

80

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

60

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

80

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程