首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes:在节点重启时只运行一次作业

Kubernetes:在节点重启时只运行一次作业
EN

Stack Overflow用户
提问于 2020-02-06 02:40:05
回答 3查看 751关注 0票数 0

在Kubernetes中,有没有办法在机器重启时只运行一次作业?

我想将cronjob作为静态pod运行,但似乎kubelet并不喜欢它。

编辑:根据回复,我想澄清一下。我只考虑通过原生Kubernetes来做这件事。我可以用Kubernetes编写一个cronjob,但我需要它只运行一次,并在节点重新启动时运行。

EN

回答 3

Stack Overflow用户

发布于 2020-02-06 10:18:13

不确定您的平台。

例如,在亚马逊网络服务中,ec2实例具有user_data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)

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

您应该可以为其他云提供商或本地服务器找到类似的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2020-02-06 20:37:08

如果我理解正确的话,您应该考虑使用DaemonSet

DaemonSet可确保所有(或部分)节点运行Pod的副本。当节点添加到集群中时,Pod也会添加到这些节点中。当节点从群集中删除时,这些Pod将被垃圾收集。删除DaemonSet会清理它创建的Pod。

这样,您就可以创建一个包含作业的容器,该作业将从DaemonSet运行。

或者,您可以考虑使用DaemonJob

这是一个类似于CompositeController的示例作业,不同之处在于将为每个节点调度一个pod,类似于DaemonSet

此外,还包括:

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

API的框架。

和:

Kubernetes是

的一个附加组件,它使得以简单脚本的形式编写和部署自定义控制器变得很容易。

但在我看来,我提供的第一个选项将更容易实现。

如果有帮助,请让我知道。

票数 0
EN

Stack Overflow用户

发布于 2020-02-06 21:03:44

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60082151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档