在Kubernetes的吊舱中运行cronjob

在Kubernetes的吊舱中运行cronjob,cron,kubernetes,kubernetes-pod,Cron,Kubernetes,Kubernetes Pod,我有一个后端nodeJS应用程序在kubernetes集群中运行。现在我想每月运行两个cron作业。cron作业位于JS文件中。我如何使用Kubernetes创建一个作业,在每个月运行该服务的pod中运行这些JS文件? 此链接提供了对其工作原理的基本理解,但对于如何为特定服务和特定pod运行它,我有点困惑。不幸的是,您无法在应用程序的容器内运行 您唯一能做的就是创建一个容器,其中包含cronjob和运行它所需的环境,并计划通过cronjob运行pod 以下是配置示例: apiVersion:ba

我有一个后端nodeJS应用程序在kubernetes集群中运行。现在我想每月运行两个cron作业。cron作业位于JS文件中。我如何使用Kubernetes创建一个作业,在每个月运行该服务的pod中运行这些JS文件?

此链接提供了对其工作原理的基本理解,但对于如何为特定服务和特定pod运行它,我有点困惑。不幸的是,您无法在应用程序的容器内运行

您唯一能做的就是创建一个容器,其中包含cronjob和运行它所需的环境,并计划通过cronjob运行pod

以下是配置示例:

apiVersion:batch/v1beta1
种类:克朗乔
元数据:
姓名:你好
规格:
计划:“*/1****”#语法与系统cron作业中的相同
作业模板:
规格:
模板:
规格:
容器:
-姓名:你好
image:image_与_cronjob_代码#这是一个与您的cronjob相关的图像
args:
-/bin/sh
--c
-日期;回显Kubernetes集群的Hello
重新启动策略:OnFailure

从技术上讲,这只是一个坏主意:)同样值得一提的是:在Kubernetes 1.8以下默认情况下未启用CronJob。我的使用案例是,我有一个应用程序运行在Kubernetes群集上,它必须每月从数据库获取一次数据。该应用程序已经有了获取数据的JS代码。我只是想知道现有的服务是否可以在Kubernetes中使用cronjob来实现这一点,如果可以的话,它是如何实现的。其中的Pod和container,其中运行的应用程序不是一个持久项。它可以在任何时候由调度程序重新启动,也可以在集群更新时重新启动,因此,您将丢失所有获取的数据。因此,在您的情况下,最好的方法是每月重建一个容器并更新集群中的应用程序。Kubernetes可以轻松地完成更新。该服务不在本地存储数据。我只需要每隔15个月从这个应用程序中提取数据,并将其存储在外部数据库中。只要脚本得到执行,就可以了。最快的方法是什么?是的,它将在完成任务后立即停止,因为Kubernetes将等待容器中的所有进程停止。