Kubernetes k8s作业创建和k8s pod挂起之间的延迟

Kubernetes k8s作业创建和k8s pod挂起之间的延迟,kubernetes,Kubernetes,我非常快地将2000个短期作业发送到kube集群,我观察到在创建作业和开始等待作业的pod之间有几分钟的延迟。有人知道瓶颈是什么吗 etcd会成为瓶颈吗?从10.000英尺的高度来看,这个过程是: 每次安排pod/作业时,都会将其添加到队列中 调度器读取该队列并将POD分配给节点 当节点收到pod的分配时,它通过调用运行时并请求创建来处理创建 鉴于上述情况,延迟可能是: 等待节点可用(状态报告)以调度pod的调度程序 运行时调度节点中的吊舱 ETCD瓶颈也可能是一个问题,但可能性较小,如

我非常快地将2000个短期作业发送到kube集群,我观察到在创建作业和开始等待作业的pod之间有几分钟的延迟。有人知道瓶颈是什么吗


etcd会成为瓶颈吗?

从10.000英尺的高度来看,这个过程是:

  • 每次安排pod/作业时,都会将其添加到队列中

  • 调度器读取该队列并将POD分配给节点

  • 当节点收到pod的分配时,它通过调用运行时并请求创建来处理创建

鉴于上述情况,延迟可能是:

  • 等待节点可用(状态报告)以调度pod的调度程序
  • 运行时调度节点中的吊舱
ETCD瓶颈也可能是一个问题,但可能性较小,如果是ETCD,您可能会在创建作业时注意到这一点

另外,值得一提的是,节点对每个节点可以同时运行的吊舱数量有限制,在上,无论节点有多大,在这种情况下,您至少需要21个节点来同时运行所有吊舱,20个用于请求的吊舱,1个额外的节点用于系统吊舱。如果您在云提供商中运行k8s,则每个提供商的限制可能不同

没有调查很难说问题出在哪里

总之:

有一个工作队列来保证集群(API/scheduler/ETCD)的可靠性,并防止突发调用影响服务的可用性,在调度POD后,节点运行时将下载映像,并确保它在自己的时间按照需要运行POD

如果问题是一个节点中同时运行pod的限制,则可能会减慢速度,因为调度程序正在等待一个节点在运行另一个pod之前完成pod,添加更多节点将改善de结果

详细介绍k8s调度器性能问题的一些示例


详细描述整个流程。

您是如何创建这些作业的?每一个2000都是独立创建的,或者它们是从一个作业中多次运行的批处理的一部分?您是否检查过您的POD?也许你的节点资源不足。嗨,@DiegoMendes这2000个作业是独立创建的。我编写了一个脚本,用8个线程创建2000个作业。前几百份工作还可以,但延迟时间越来越长。看起来好像有人在排队,但我不确定。我想知道是否有一些配置参数,我可以调整,以缓解这个问题…嗨,@CookieMough我还没有检查我的吊舱,但我很确定资源不是问题,因为我发送的集群有足够的cpu和ram与我的工作负载相比,但我会仔细检查。。。