在Kubernetes中,有没有办法在机器重启时只运行一次作业?
我想将cronjob作为静态pod运行,但似乎kubelet并不喜欢它。
编辑:根据回复,我想澄清一下。我只考虑通过原生Kubernetes来做这件事。我可以用Kubernetes编写一个cronjob,但我需要它只运行一次,并在节点重新启动时运行。
发布于 2020-02-06 10:18:13
不确定您的平台。
例如,在亚马逊网络服务中,ec2实例具有user_data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)
它将在启动时在Linux/Windows实例上运行命令
您应该可以为其他云提供商或本地服务器找到类似的解决方案。
发布于 2020-02-06 20:37:08
如果我理解正确的话,您应该考虑使用DaemonSet
DaemonSet可确保所有(或部分)节点运行Pod的副本。当节点添加到集群中时,Pod也会添加到这些节点中。当节点从群集中删除时,这些Pod将被垃圾收集。删除DaemonSet会清理它创建的Pod。
这样,您就可以创建一个包含作业的容器,该作业将从DaemonSet运行。
或者,您可以考虑使用DaemonJob
这是一个类似于
CompositeController的示例作业,不同之处在于将为每个节点调度一个pod,类似于DaemonSet。
此外,还包括:
Kubebuilder是一个使用自定义资源定义(CRD)构建
API的框架。
和:
Kubernetes是
的一个附加组件,它使得以简单脚本的形式编写和部署自定义控制器变得很容易。
但在我看来,我提供的第一个选项将更容易实现。
如果有帮助,请让我知道。
发布于 2020-02-06 21:03:44
为此,可以考虑使用CronJob。它采用与linux上的普通cron调度程序相同的格式。除了通常用于表示计划的格式(分钟/小时/月/日/月/周)外,cron调度程序还允许使用@reboot。此指令,后跟脚本的绝对路径,将使其在机器引导时运行。
https://stackoverflow.com/questions/60082151
复制相似问题