【问题标题】:Kubernetes Cronjob accross Namespaces跨命名空间的 Kubernetes Cronjob
【发布时间】:2020-07-22 07:50:40
【问题描述】:

我有一个 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

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

【问题讨论】:

  • 为什么不在命名空间中创建一个 cronjob?
  • 因为如果我理解正确的话,cronjob 会在每次运行时生成一个 pod,这会给存储增加很大的压力,特别是如果你每 10 分钟生成 100 个 pod。我真的很想避免这种情况。
  • 我会说和@ArghyaSadhu 一样,即使你每 10 分钟生成 100 个 pod,它们也会完成它们的工作然后被移除。看看这个较旧的stackoverflow question,在这里提出了类似的问题。据我在这里检查,没有“最佳方法”,其中一个答案与您的想法非常相似,所以我认为这应该可行。
  • 感谢@jt97 提供指向该问题的指针。我可能会使用 bash 循环/例程而不是那个 python 代码 sn-p 但会采用这种方法。关于存储,如果它是云中的一些存储,我不必关心,但由于它是一个共享的 ceph 存储,当您声明一个卷并且需要让他们在删除时将其归零,每 10 分钟创建/删除 100 个存储声明在我的环境中是不可行的。
  • @LucidEx 当然,我会将其添加为社区 wiki 答案,因此如果有人想寻找类似的问题,他可以在这里找到有用的东西,如果您有要添加的内容,请编辑我的答案并添加来自自己。

标签: kubernetes


【解决方案1】:

正如我和@Argha Sadhu 所提到的,其中一个选项是为所有 pod 创建 cronjobs,但它每 10 分钟会生成 100 个 pod,所以正如 @LucidEx 提到的那样,在云中存储就可以了,但在他的环境中并没有那么多。

关于存储,如果它是云中的一些存储就可以了,我不必关心,但由于它是一个共享的 ceph 存储,当你声明一个卷时它的所有开销(尤其是内存和 cpu)和在我的环境中,每 10 分钟删除创建/删除 100 个存储声明时需要将它们归零是不可行的。 – LucidEx


其他选项可以在这个较旧的stackoverflow question 找到,类似的问题被问到这里。

正如@LucidEx 提到的

我可能会使用 bash 循环/例程而不是 python 代码 sn-p,但会使用这种方法。

这个python代码sn-p是here

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2021-03-05
    • 2019-01-23
    • 2023-03-17
    • 2020-08-21
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多