Kubernetes:仅在节点重新启动时运行作业一次

Kubernetes:仅在节点重新启动时运行作业一次,kubernetes,cron,jobs,kubernetes-pod,kubelet,Kubernetes,Cron,Jobs,Kubernetes Pod,Kubelet,在Kubernetes中,有没有一种方法可以在机器重新启动时只运行一次作业 曾想过将cronjob作为静态pod运行,但kubelet似乎不喜欢它 编辑:根据回复,我想澄清一下。我只是想通过土生土长的库伯内特人来做这件事。我可以用Kubernetes编写cronjob,但我只需要在节点重新启动时运行一次即可。不确定您的平台 例如,在AWS中,ec2实例具有user\u数据() 它将在启动时在Linux/Windows实例上运行命令 P>您可以很好地找到其他云提供商或本地服务器的类似解决方案。

在Kubernetes中,有没有一种方法可以在机器重新启动时只运行一次作业

曾想过将cronjob作为静态pod运行,但kubelet似乎不喜欢它


编辑:根据回复,我想澄清一下。我只是想通过土生土长的库伯内特人来做这件事。我可以用Kubernetes编写cronjob,但我只需要在节点重新启动时运行一次即可。

不确定您的平台

例如,在AWS中,ec2实例具有
user\u数据
()

它将在启动时在Linux/Windows实例上运行命令


<> P>您可以很好地找到其他云提供商或本地服务器的类似解决方案。

< P>如果我理解正确,您应该考虑使用:

守护程序集确保所有(或部分)节点运行Pod的副本。作为
节点被添加到集群中,吊舱被添加到集群中。正如节点一样
从集群中移除后,这些吊舱将被垃圾收集。删除
守护进程集
将清理它创建的POD

这样,您就可以创建一个包含作业的容器,该作业将从
守护程序集运行

你可以考虑:

这是一个类似于Job的示例
CompositeController
,除了 将为每个节点安排一个pod,类似于
守护进程集

还有:

Kubebuilder是一个使用自定义 资源定义(CRD)

以及:

Metacontroller是Kubernetes的一个附加组件,它使编写变得简单 并以简单脚本的形式部署自定义控制器

但我认为,我提供的第一个选择更容易实施


如果有帮助,请告诉我

考虑为此使用CronJob。它采用与linux上普通cron调度程序相同的格式。 除了常用格式(分钟/小时/月日/月日/周日)广泛用于指示计划外,cron scheduler还允许使用
@reboot
。 此指令后跟脚本的绝对路径,将使其在机器引导时运行