【发布时间】: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