请问如何降低 K8s 调度 Pod 的速度

2021-02-02 11:44:13 +08:00
 whileFalse
我司有七八十个微服务,大部分是 Java 。我们的测试环境运行在单个虚拟机上,128G 内存,4 核,MicroK8s 环境。

现在的问题是在测试环境全新启动过程中会突发所有 Pod 同时被删除重启的问题,原因是 SandboxChanged 。
> Warning FailedCreatePodSandBox 14m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "9070dfeabddbd48c08e36377868ed671240653ff4a9fd4fdf03b4af9c9b72dfe": context deadline exceeded
> Normal SandboxChanged 14m (x2 over 16m) kubelet Pod sandbox changed, it will be killed and re-created.

原因是 Node 短暂失联后恢复,导致所有 Pod 重新部署。

> Warning ContainerGCFailed 31m kubelet rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial unix /var/snap/microk8s/common/run/containerd.sock: connect: no such file or directory"
> Normal NodeNotReady 31m kubelet Node c7-test-env-11-206 status is now: NodeNotReady

估计是太多服务同时启动,CPU 压力过高导致 Node 上的 API 超时,从而 kubelet 认为 Node 断联导致的。
将 CPU 增加到 8 个后此问题再没有重现。但因为资源不足,某些测试环境暂时无法增加 CPU 。

因此,有没有什么方法可以在系统负载过大时合理地降低 Pod 调度速度,从而减轻此问题呢?
1779 次点击
所在节点    Kubernetes
3 条回复
hzfyjgw
2021-02-02 21:50:53 +08:00
测试环境 kubelet 与 api server 之间的心跳检测时间拉长试试
Devopsre
2021-02-24 18:53:37 +08:00
魔改 scheduler
FingerLiu
2021-03-16 20:07:34 +08:00
PLEG?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX