【问题标题】:Deployment pod or CronJob for a job to be done every minute?部署 pod 或 CronJob 以每分钟完成一项工作?
【发布时间】:2020-09-29 15:01:04
【问题描述】:

我从 Kubernetes 开始,我有一个关于 CronJob 的问题,在我的项目中,我需要每分钟启动一个 cron 作业。在许多使用 CronJob 资源的教程中,我设置了它,我看到每分钟都会创建一个 pod 来执行命令,然后被销毁,并且无限期地销毁。 我想知道在我的情况下(每分钟)使用 Kubernetes CronJob 资源是否很有趣,因为知道每分钟都会通过拉取图像等来创建一个 pod ......我发现这个过程有点麻烦,不是更好吗一个以传统方式执行 cron 的简单 pod?

【问题讨论】:

    标签: kubernetes cron amazon-eks kubernetes-cronjob


    【解决方案1】:

    看看在 pod 内运行 cronjob 而不是 kubernetes CronJob。这样您就不必每分钟都为启动一个新 pod 而烦恼。

    【讨论】:

    • 我是这么想的,最好有一个带有crontab的pod,并以传统方式启动我的工作,而不是使用kubernetes的CronJob。
    【解决方案2】:

    我更喜欢使用 CronJobs 将 cronjobs 作为原生 Kubernetes 工作负载运行。与在一个 pod 中运行作业相比,作为 CronJob 运行允许 Kubernetes 有效地管理资源。并且您可以轻松扩展作业数量,并且您不限于一个节点。

    但是,您必须处理失败的作业、重叠的作业、幂等性等,您必须使用任何调度程序来解决这些问题。

    此外,您可以根据您的业务用例考虑使用专用 pod。如果您正在实现发布者-订阅者,那么运行专用容器是有意义的。对于简单的作业,CronJobs 应该可以工作。

    顺便说一句,您不必担心每次都拉取图像。您可以将 imagePullPolicy 指定为 IfNotPresent。

    只有在本地不存在图像时才会拉取图像。

    【讨论】:

      【解决方案3】:

      我认为权衡取舍取决于 cronjob 运行的频率以及它是否可能完成大量工作。如果不频繁,为什么要让一个 pod 坐在那里无所事事?此外,每次安排作业时,都可以将 Pod 安排在更合适/空/较新的节点上,而部署通常会将该 Pod 留在安排它的节点上,直到您对其进行更新。

      监控工具更有可能针对原生 K8S cronjobs,否则,您怎么知道您的作业已被跳过/出错等?

      如果更频繁,并且您想要实时日志记录等内容,那么通过部署的 pod 可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 2021-04-05
        • 2012-08-26
        • 2020-06-02
        • 1970-01-01
        • 2017-01-19
        • 1970-01-01
        • 2023-03-16
        • 2015-04-25
        相关资源
        最近更新 更多