V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whileFalse
V2EX  ›  Kubernetes

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

  •  
  •   whileFalse · 2021-02-02 11:44:13 +08:00 · 1758 次点击
    这是一个创建于 1394 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我司有七八十个微服务,大部分是 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 调度速度,从而减轻此问题呢?
    3 条回复    2021-03-16 20:07:34 +08:00
    hzfyjgw
        1
    hzfyjgw  
       2021-02-02 21:50:53 +08:00
    测试环境 kubelet 与 api server 之间的心跳检测时间拉长试试
    Devopsre
        2
    Devopsre  
       2021-02-24 18:53:37 +08:00 via Android
    魔改 scheduler
    FingerLiu
        3
    FingerLiu  
       2021-03-16 20:07:34 +08:00
    PLEG?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1513 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:08 · PVG 01:08 · LAX 09:08 · JFK 12:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.