创建k8s作业和k8s pod待处理之间的延迟

问题描述 投票:0回答:1

我很快就将2000个短期工作发送到了我的kube集群,我发现在创建一个作业和一个待开始工作的pod之间有几分钟的延迟。有没有人知道什么可能是瓶颈?

etcd可能成为瓶颈吗?

kubernetes
1个回答
1
投票

从10,000英尺的角度来看,过程是:

  • 每次安排pod / job时,它都会被添加到队列中。
  • 调度程序读取该队列并将POD分配给节点。
  • 当节点收到pod的分配时,它通过调用运行时并请求创建来处理创建。

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

  • 等待节点可用的调度程序(状态报告)以调度pod
  • 运行时调度节点中的pod

ETCD瓶颈可能也是一个问题,但不太可能,如果你在创建工作时可能会注意到ETCD。

另外,值得一提的是节点对V1.14 no more than 100 pods per node can run at same time上每个节点可以同时运行的pod数量有限制,无论节点有多大,在这种情况下,你需要至少21个节点才能同时运行时间,20表示请求的pod和1个额外的节点来计算系统pod。如果您在云提供商中运行k8s,则每个提供商的限制可能会有所不同。

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

综上所述:

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

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

This link详细介绍了k8s调度程序性能问题的一些示例。

This link在一些细节中描述了整个流程。

© www.soinside.com 2019 - 2024. All rights reserved.