当前位置: 首页 > 知识库问答 >
问题:

Kubernetes Cronjob accross命名空间

汪德寿
2023-03-14

我有一个库伯内特斯集群,同一个应用程序运行几次,但名称空间不同。想象一下

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

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

共有1个答案

陈哲
2023-03-14

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

关于存储,如果是云中的一些存储就好了,我不必担心,但由于它是一个共享的ceph存储,当您声明一个卷时会有所有开销(特别是ram和cpu ),并且需要在删除时将它们清零每10分钟创建/删除100个存储声明,这在我的环境中是不可行的。LucidEx

另一个选项可以在这个老的stackoverflow问题中找到,这里也问过类似的问题。

正如@LucidEx提到的

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

这是python代码片段。

 类似资料:
  • 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 这篇文章描述了如何在TypeScript里使用命名空间(之前叫做“内部模块”)来组织你的代码

  • Let the word of Christ dwell in you richly in all wisdom; teaching and admonishing one another in psalms and hymns and spiritual songs, singing with grrace in your hearts tto the Lord. And whatsoever

  • 客户端有许多“命名空间”,通常是一些公开的可管理功能。命名空间对应 Elasticsearch 中各种可管理的 endpoint。下面是全部的命名空间: **命名空间** **功能** `indices()` 索引数据统计和显示索引信息 `nodes()` 节点数据统计和显示节点信息 `cluster()` 集群数据统计和显示集群信息 `snapshot()` 对集群和索引进行拍摄快照或恢复数据

  • 命名空间 由于 js 环境极少命名空间管理模块, namespace 相对陌生, 比如有这样的文件结构, src/ demo/ core.cljs 可以看到 core.cljs 的路径就是: src/demo/core.cljs 注意 JVM 环境有个 classpath 的环境变量, 用于判断怎样查找源码, classpath 对应多个路径, 也可能是 jar 包, 而 jar 包中

  • 命名空间,英文名字:namespaces 在研习命名空间以前,请打开在python的交互模式下,输入:import this >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than

  • Swoole提供了完善的进程管理机制,当Worker进程异常退出,如发生PHP的致命错误、被其他程序误杀,或达到max_request次数之后正常退出。主进程会重新拉起新的Worker进程。 Worker进程内可以像普通的apache+php或者php-fpm中写代码。不需要像Node.js那样写异步回调的代码。 主进程内的回调函数: onStart onShutdown onTimer Work

  • 大小写 命名空间全部使用小写字母。如namespace swoole::coroutine 空间层次 顶层空间必须为swoole 对PHP的封装顶层命名空间为zend 内核协程扩展模块,必须在swoole::coroutine命名空间下 引用模块 using swoole::coroutine::Socket; using swoole::coroutine::System;

  • 命名空间用于逻辑上隔离Kubernetes集群中的资源。 命名空间用于逻辑上隔离Kubernetes集群中的资源。多集群命名空间支持将命名空间关联到多个集群,并在集群中创建相同名称的命名空间。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “容器/多集群资源/命名空间” 菜单项,进入命名空间页面。 新建命名空间 该功能用于新建多集群命名空间。 在命名空间页面,单击列表上方 “新建”