当前位置: 首页 > 知识库问答 >
问题:

是否可以在 cron 作业 pod 上使用 Kubernetes 自动缩放

拓拔飞飙
2023-03-14

一些上下文:我有多个cron作业每天、每周、每小时运行,其中一些需要很大的处理能力。我想向这些容器cron podhtml" target="_blank">添加请求和限制,以尝试启用垂直扩展,并确保所分配的节点在初始化时具有足够的容量。这将使我不必在任何时候都有多个大型节点可用,也可以让我轻松地修改并行运行的cron数量。我想尽量避免定时缩放,因为cron作业的处理时间会随着应用程序的增长而增加。

编辑 - 附加信息 : 目前我正在使用数字海洋并利用它的 UI 进行集群自动缩放。我让它与 HPA 合作进行部署,但不是 crons。据我所知,向 crons 添加限制不会触发群集自动缩放。

我曾尝试使用cron启用HPA扩展,但没有成功。基本上,它只是处于挂起状态,表示可用CPU不足,不会生成新节点。

HPA扩展是否适用于cron作业包,是否有方法实现相同类型的扩展?

共有2个答案

禹兴安
2023-03-14

这是一个社区Wiki答案,所以请随时编辑它并添加任何您认为重要的其他细节。

正如 Dom 已经提到的那样,“这不会增加集群上的资源”。更具体地说,它不会创建一个额外的节点,因为水平 Pod 自动缩放程序没有这样的功能,实际上它与集群缩放无关。它的名字是相当自我解释的。HPA 只能扩展 Pod,并且可以水平扩展它们,换句话说,它可以根据观察到的 CPU 利用率(或者,在自定义指标支持下,根据其他一些应用程序提供的指标)自动增加或减少“复制控制器、部署、副本集或有状态集”的副本数量。

至于集群自动扩展,正如Dom已经说过的那样,这些解决方案是在所谓的托管Kubernetes解决方案中实现的,例如GCP上的GKE,AWS上的EKS或Azure上的AKS等等。通常无需执行任何操作即可启用它们,因为它们是开箱即用的。

你可能想知道HPA和CA是如何结合在一起的。群集自动缩放器项目的常见问题解答部分对此进行了很好的解释:

水平容器自动缩放程序根据当前 CPU 负载更改部署或副本集的副本数。如果负载增加,HPA 将创建新的副本,群集中可能有足够的空间,也可能没有足够的空间。如果没有足够的资源,CA 将尝试启动一些节点,以便 HPA 创建的 Pod 有一个运行的地方。如果负载减少,HPA 将停止某些副本。因此,某些节点可能会未充分利用或完全为空,然后 CA 将终止这些不需要的节点。

暨鹭洋
2023-03-14

HPA用于在单元负载较高时扩展更多单元,但这不会增加集群上的资源。

我认为您正在寻找集群自动缩放器(适用于AWS,GKE和Azure),并且在无法计划Pod时会增加集群容量。

 类似资料:
  • 我必须执行简单的cron作业。例如,每天上午10点,我必须打开一个链接,然后链接做所有的工作。为此,我使用cron-job.org。 然而事情变得复杂了,我需要一个关于我应该如何进行的建议。 这个任务很简单,每天在某个时间,我必须执行这个作业(打开一个链接),但是这个时间是动态的,我从JSON数据中获取。 真正的问题是,我需要在每天00:00阅读一个json,其中包含作业在该特定日子必须执行的时间

  • 我有一个webapp在Kubernetes集群的Docker-container中运行。该应用程序有一个endpoint,我想定期调用。应用程序在多个节点/吊舱上运行,重要的是只有一个节点执行endpoint发起的任务。我查看了Kubernetes Cron作业,但没有找到任何关于从Kubernetes Cron作业调用endpoint的文档。有人对解决这个问题有什么建议吗?在只有一个节点执行任务

  • 是否可以将kubernetes作业作为我的kubernetes吊舱的初始容器? 我想只有在kubernetes作业成功达到完成状态后才启动kubernetes pod/部署。如果以上都不行,还有其他出路吗?我不能使用外部脚本检查等,然后启动我的pod。

  • 我希望一个应用程序从队列中提取一个项目,在队列中处理该项目,然后销毁它自己。拉->过程->破坏。 我已经研究了使用作业模式队列和每个工作项的Pod,因为这适合于使用,但是,当我需要作业在队列为空时自动缩放AKA0/1 Pod,并且在添加项时缩放到某个点时,这是不合适的。我能看到的唯一方法是通过部署,但这将删除每个工作项带有Pod的队列模式。每个项目必须有一个新鲜容器。 有没有一种方法可以让每个工作

  • 我们正在Kubernetes上部署Rails应用程序。 任务作为Docker映像构建过程的一部分运行。 我们希望在每个部署上运行 rake 任务,如 rake db:migrate 任务和其他任务。 当前的解决方案,我们正在使用 kubectl exec。 获取pods列表 然后在rails pod上执行: ' 我们需要使用kubernentes cron工作(. yaml)来启动我们的rake

  • null 有没有一种方法可以通过ScheduledJobs/CronJobs来实现这一点? http://kubernetes.io/docs/user-guide/cron-jobs/