问题标签 [kubernetes-cronjob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
814 浏览

kubernetes - 如何在 kubernetes API(或 kubectl)中过滤给定 CronJob 拥有的作业?

我有几个 CronJobs,我希望能够查询特定作​​业的已完成作业列表。我试过--field-selector metadata.ownerReferences.uid了,但这不是 batchv1.job 支持的字段选择器(看起来这个用例似乎没有有用的字段选择器)。

我不完全理解 DownwardAPI,但我想知道是否可以在引用 cronjobs uid 的 job_spec(在 cronjob 定义中)上设置标签,以便我可以使用标签选择器进行过滤。我不知道那是否可能。

按所有者过滤工作似乎是一件合理的事情,但在四处搜索时我似乎找不到任何有用的信息。

0 投票
1 回答
10072 浏览

kubernetes - 如何在 Kubernetes 中使用 CronJobs 运行 shell 脚本?

我正在尝试使用 CronJob 以 1 分钟的定期间隔运行 shell 脚本。

我在我的 openshift 模板中创建了以下 Cron 作业:

以下是在此作业中作为卷插入的 configmap:

此 Cron 作业正在运行。正如我所看到的那样,工作名称每 1 分钟被替换一次(按照我的工作计划)。但它没有执行 shell 脚本 croyscript.sh 我在这里做错了吗?(可能是我插入了配置映射错误,所以 Job 无法访问 shell 脚本)

0 投票
1 回答
104 浏览

kubernetes - cronjob Kubernetes 使用应用程序和云代理容器的预期行为

我正在尝试在我的集群上设置一个 cron 作业,并且我有一个 cloudsql 代理和我的应用程序容器在 pod 中运行,cron 作业工作正常,但是当我执行时kubectl get pods --watch,我看到在我的 cronjob pod 中,就绪列显示 1 /2,这是预期的行为吗

我不确定并试图了解这是否是预期的行为,或者我是否遗漏了某些东西并且没有正确配置它,任何帮助都会非常棒。

不确定它是否有帮助,但我的 cron 工作只是执行rake task

这是的输出kubectl get pods --watch

0 投票
1 回答
189 浏览

kubernetes - 具有 Kubernetes 持久卷的 SCDF 中的计划任务

我正在尝试在 minikube 上的 SCDF 中运行任务。此任务从数据库中提取数据并将其写入文件。所以我使用我在 Kubernetes Dashboard 中配置的本地持久卷来获取我的文件。当我使用部署器参数运行简单执行时,它工作正常:

deployer.my-task.kubernetes.volumes=[ { name: vol-data, persistentVolumeClaim: {claimName: 'pv-data-claim'}} ]
deployer.my-task.kubernetes.volumeMounts=[ { name: 'vol-数据', mountPath: '/data' } ]

当我查看 pod yaml 文件时,我看到了我的卷属性:

在执行结束时,我将文件放在本地目录中。

但是当我尝试创建具有相同参数的计划任务时,它不起作用。我没有在 cronjob yaml 或 cronjob 启动的 pod 中看到我的卷属性,当然我也没有得到我的文件。

我错过了什么吗?我在想从 SCDF 启动一个简单的任务或计划任务是一样的

谢谢你的帮助

0 投票
2 回答
941 浏览

kubernetes - Kubernetes Cronjobs 可以重用现有部署中的环境变量吗?

我正在使用 Kubernetes Cronjob 来运行周期数据库恢复和发布恢复脚本,这些脚本针对目标环境运行,其中包括使用数据库、redis 和文件系统等任务。

我面临的问题是我必须重新定义我在 Cronjob 中的部署中使用的所有环境变量(例如,、、DATABASE_NAMEDATABASE_PASSWORDREDIS_HOST

虽然重复所有环境变量都有效,但很容易出错,因为我已经忘记更新作业,这导致我不得不重新运行整个过程,这需要 2-4 小时才能运行,具体取决于环境。

有没有办法在我的 Cronjob 中引用现有的Deployment并重新使用定义的环境变量?

0 投票
2 回答
1757 浏览

jobs - 有没有办法限制 Kubernetes 中作为 CronJob 实例的正在运行的 pod 的数量?

我在 K8S 中配置了一个 CronJon,它每 10 分钟创建一个 pod。运行中的容器可以在 5 分钟到 2 小时内完成,无法判断。

有时,当计算花费很长时间时,我最终会创建太多的 pod。

有没有办法限制正在运行的 Pod 的数量、特定 CronJob 的实例?

编辑

澄清一下,我想要并发运行,我想将正在运行的并发实例的数量限制为一定的大数 N。

0 投票
1 回答
1044 浏览

kubernetes - 使用与 StatefulSet 中的其他 1 个 Pod 相同的 PVC 调度作业

在 Kubernetes 集群中,我希望能够安排一个作业(使用 CronJob),该作业将挂载与给定 StatefulSet 的 1 个 Pod 相同的卷。哪个 Pod 是运行时决定,取决于在调度 Job 时在 Pod 上设置的标签。

我想很多人会想知道为什么,因此描述一下我们正在做什么和试图做什么:

当前设置

我们有一个为 PostgreSQL 数据库提供服务的 StatefulSet。(一个主,多个副本)我们希望能够从 StatefulSet 的其中一个 pod 创建备份。

对于 PostgreSQL,我们已经可以使用 进行网络备份pg_basebackup,但是我们正在运行多 TB 的 PostgreSQL 数据库,这意味着完全流式备份(使用pg_basebackup)是不可行的。

我们目前使用pgBackRest备份数据库,它允许增量备份。

由于增量备份pgBackRest需要访问数据卷和 WAL 卷,因此我们需要在与 PostgreSQL 实例相同的 Kubernetes Node 上运行 Backup Container,我们目前甚至在单独的 Container 中的同一个 Pod 中运行它。

在容器内部,一个小 api 环绕pgBackRest,可以通过向POSTapi 发送请求来触发,目前这个触发是使用 CronJobs 完成的。

缺点

  • 每个 PostgreSQL 实例在 Pod 中都有多个容器,1 个用于服务 Postgres,1 个用于服务于一个小包装器pgBackRest
  • 作业日志仅显示成功的备份触发器,实际的备份日志是备份容器的一部分
  • 将运行备份的 Pod 可能在相对较旧的配置上运行,更改备份配置需要重新调度 Pod,这可能意味着 PostgreSQL 主节点的故障转移。

建议的设置

让 CronJob 调度一个与 StatefulSet 的 Pod 具有相同 Volume 的 Pod。这将允许备份使用这些卷。

但是,它需要哪些卷是一个运行时决定:我们可能希望在连接到主卷的卷上运行备份,或者我们可能希望使用副本的卷进行备份。主/副本可能随时更改,因为 PostgreSQL 主的自动故障转移是解决方案的一部分。

目前,这是不可能的,因为我无法在 CronJob 规范中找到任何方法来使用来自 k8s api 的信息。

什么有效,但不是很好:

  • 使用调度作业的 CronJob
  • 这个 Job 查询 k8s api 并调度另一个Job

例如,我们可以使用以下运行时信息让一个作业创建另一个作业:

以上可能最好由操作员提供,而不仅仅是使用 CronJob,但我想知道是否有人对上述问题有解决方案。

缺点

  • 作业日志仅显示成功的备份触发器,实际的备份日志是另一个作业的一部分
  • 作业需要权限来安排 Pod,需要另一个角色/角色绑定
  • 在 Bash 中使用 heredocs 会使事情更难阅读/解析/理解

概括

长话短说,但这些是我们想要满足的约束:

  • 运行 PostgreSQL 数据库的备份
  • 这些是多 TB 数据库
  • 所以需要增量备份
  • 因此,我们需要挂载一个已经运行的 Pod 的同一个 PV
  • 因此,我们需要在与 PV 相同的 K8s 节点上运行 Pod(或容器)
  • 我们希望能够在 CronJob 规范中表达这一点,而不必进行运行时 kubernetes api 调用
0 投票
1 回答
47 浏览

kubernetes - 即使超过时间,Kubernetes Cronjob 也会立即触发 Job

我有 Kubernetes 工作,每天早上 5 点运行。今天我想把它改成早上 6 点。我现在的时间是上午 10 点。

将时间从早上 5 点修改为早上 6 点后,我注意到即使我当前的时间是上午 10 点,Kubernetes Cronjob 也会立即触发作业。

这是什么原因?是否有任何参数可用于启用/禁用此行为?


0 投票
1 回答
153 浏览

kubernetes - 由于记录的限制,我会在 Kubernetes 中同时运行我的 CronJob

根据K8S 中的这个页面,“......可能会创建两个工作......”。

如果我将我的设置concurrencyPolicy为“禁止” - 由于调度程序,我是否仍会获得可选的并发运行,或者我是否会获得并发调用以运行但被阻止?

我还在文档站点中打开了一个问题: https ://github.com/kubernetes/website/issues/18655

0 投票
2 回答
3764 浏览

cron - 如何在 hybris 中的特定时间触发 cronjob

我想每天 在美国东部标准时间上午 9 点、美国东部标准时间下午 1 点、美国东部标准时间晚上 10 点在以下时间触发一个 cronjob

除了 cron 表达式,我们还有其他选择,以便客户可以轻松更改此时间吗?

问候, 拉西卡