首页 > 解决方案 > 跨命名空间的 Kubernetes Cronjob

问题描述

我有一个 Kubernetes 集群,其中同一个应用程序运行了几次,但具有不同的命名空间。想象

ns=app1 name=app1
ns=app2 name=app2
ns=app3 name=app3
[...]
ns=app99 name=app99

现在我需要在所有这些 Pod 中每 10 分钟执行一次 cronjob。每次的路径都是一样的。

有没有“最好的方法”来实现这一目标?

我在想一个以“CronJob”形式运行的 kubectl 图像,如下所示:

kubectl get pods -A -o=custom-columns='DATA:spec.containers[?(@.image=="registry.local/app-v1")].image' | xargs -i kubectl exec {} /usr/bin/scrub.sh

但我很确定这不是解决这个问题的正确方法。

标签: kubernetes

解决方案


正如我和@Argha Sadhu 所提到的,其中一个选项是为所有 Pod 创建 cronjobs,但它每 10 分钟会生成 100 个 Pod,所以正如 @LucidEx 提到的那样,在云中存储会很好,但不是那样在他的环境中。

关于存储,如果它是云中的一些存储,我不必关心,但由于它是一个共享的 ceph 存储,当您声明一个卷并且需要让他们在删除时每 10 分钟创建/删除 100 个存储声明归零在我的环境中是不可行的。– LucidEx


另一个选项可以在这个较旧的stackoverflow 问题中找到,类似的问题被问到这里。

正如@LucidEx 提到的

我可能会使用 bash 循环/例程而不是那个 python 代码片段,但会采用这种方法。

这个 python 代码片段在这里


推荐阅读