kubernetes - 跨命名空间的 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
但我很确定这不是解决这个问题的正确方法。
解决方案
正如我和@Argha Sadhu 所提到的,其中一个选项是为所有 Pod 创建 cronjobs,但它每 10 分钟会生成 100 个 Pod,所以正如 @LucidEx 提到的那样,在云中存储会很好,但不是那样在他的环境中。
关于存储,如果它是云中的一些存储,我不必关心,但由于它是一个共享的 ceph 存储,当您声明一个卷并且需要让他们在删除时每 10 分钟创建/删除 100 个存储声明归零在我的环境中是不可行的。– LucidEx
另一个选项可以在这个较旧的stackoverflow 问题中找到,类似的问题被问到这里。
正如@LucidEx 提到的
我可能会使用 bash 循环/例程而不是那个 python 代码片段,但会采用这种方法。
这个 python 代码片段在这里。
推荐阅读
- javascript - 当 jscript 确认并通过 AJAX 调用 PHP 时如何更新 $_SESSION 值
- firebase - Firebase Firestore:将新数组合并到存储在文档中的数组中?
- html - 如何在我已将 grid-auto-flow 设置为 column 的情况下使用 CSS grid 给出多个列
- sql-server - 密码不得包含超过 SQL Server 中三个连续字符的用户帐户名或用户全名的一部分
- optaplanner - scoreManager.explainScore(解决方案)在 Optaplanner 中不起作用
- angular - 在 RxJS 可观察对象的订阅者完成后执行函数
- quarkus - 如何在 Quarkus 中以编程方式覆盖应用程序属性
- java - 通过 apache camel 连接到 SFTP
- asp.net - 从 Web 表单中检索记录列表
- python - ModuleNotFoundError:没有名为“tabula”的模块。在尝试了很多事情之后