已关闭
【引导节点apiserver的QPS默认配置为5】 #2056
x_chao183创建于  8月21日关闭于  15 天前
x_chao183成员
8月21日 创建

注意事项/ Notes

环境信息/ Environment

192.168.200.73

问题简述/ Brief Description

使用bke cluster create 创建集群时,存在apiserver流量限制

问题详情&复现步骤 / Details & Reproduction Steps

image.png
image.png

期望结果/ Expected Results

提高QPS、Brust阈值

实际结果/Actual Results

存在流量限制

likedislike
Xx_chao183成员
8月21日 关联了里程碑:v26.09
Xx_chao183成员
8月21日 添加了label:sig/sig-Installation
Xx_chao183成员
8月21日 关联了看板:openFuyao - v26.09问题单
openFuyao-botopenFuyao-bot成员
8月21日 添加了label:sig/sig-Docs
openFuyao-bot
openFuyao-bot成员
8月21日 评论:

欢迎来到 openFuyao 社区

Hey @x_chao183 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

有疑问可以联系 SIG: sig-Docs ,
维护者是: @ChristinaWang, @andxibei, @dingtingyu, @foxbit, @regandy ,

likedislike
wangyikai
wangyikai成员
8月31日 评论:
  • 摘要:问题现象与 bke cluster create 过程中访问引导节点本地 Kubernetes API 时触发 client-go 默认限流一致。当前代码没有给 bkeadm 自身使用的 Kubernetes client 设置 QPS/Burst,因此会使用 client-go 默认值,通常为 QPS=5、Burst=10。
  • 根因:pkg/executor/k8s/k8s.go 的 NewKubernetesClient() 通过 clientcmd.BuildConfigFromFlags() 构造 rest.Config 后,直接传给 kubernetes.NewForConfig() 和 dynamic.NewForConfig(),未覆盖 config.QPS、config.Burst 或 config.RateLimiter。在创建集群资源较多时,bkeadm 侧请求会被本地 client 限流,表现为截图中的 Waited for ... due to client-side throttling。
  • 定位:
    • pkg/executor/k8s/k8s.go:NewKubernetesClient() 未设置 rest.Config.QPS/Burst。
    • pkg/infrastructure/k3s/k3s.go、pkg/initialize/bkeconsole/install_console.go:引导节点本地 k3s 启动时未发现显式设置 apiserver QPS 类参数。
    • pkg/config/config.go:目标集群生成配置里已经给 controller-manager、scheduler、kubelet 配置了较高的 kube-api-qps,例如 1000,所以本问题优先应处理 bkeadm 连接引导集群的 client-go 配置。
  • 建议解决方案:在 pkg/executor/k8s/k8s.go 中为 bkeadm 创建 Kubernetes client 的公共入口统一设置较高的 client QPS/Burst,例如:
const (
    defaultKubeClientQPS   = 1000
    defaultKubeClientBurst = 2000
)

// BuildConfigFromFlags 成功后设置
config.QPS = defaultKubeClientQPS
config.Burst = defaultKubeClientBurst

这样 ClientSet 和 DynamicClient 都复用同一个已调优的 rest.Config,能覆盖 bke cluster create 安装 YAML、创建/查询资源、等待集群状态等路径。

  • 验证建议:补充或调整 pkg/executor/k8s/k8s_test.go,mock kubernetes.NewForConfig / dynamic.NewForConfig 时断言传入的 rest.Config.QPS == 1000、Burst == 2000;再执行 go test ./pkg/executor/k8s。端到端可复跑 bke cluster create,确认日志中不再频繁出现 client-side throttling。
likedislike
lihangyulihangyu成员
18 天前 移除了负责人 piamposer-li
lihangyulihangyu成员
16 天前 关联了pull request:fix(k8s): cache API discovery and raise client rate limit to avoid install throttling
lihangyulihangyu成员
16 天前 issue状态由 开启 改变为 待测试
Xx_chao183成员
15 天前 issue状态由 待测试 改变为 已完成
Xx_chao183成员
15 天前 关闭了 issue