问题标签 [kubernetes-jobs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 在 Kubernetes 中手动将作业的状态更改为成功
对于一些故障排除,我需要手动将正在运行的作业的状态从active
更改successful
为 以使其完成。作业本身就是一个没有完成的无限循环。无法使用删除作业的选项,因为它将作业置于失败状态。
更新:该作业实际上并没有失败,而是卡住了,因此我将其删除,使其进入失败状态。此外,无法更改作业的代码(它不是 bash 脚本)。
谢谢
kubernetes - 在不同主机上使用复制容器安排作业
我正在尝试运行一个 Kubernetes 作业,它将在每个主机上部署相同的 pod 并在每个 pod 中运行相同的命令(相同的执行)。集群中有 5 个工作人员worker01
, worker02
, ..., worker05
。此定义在随机主机上安排一个 pod:
所有 pod 都应该挂载到同一个 pvc 上。不确定实现这一目标的最佳方法是什么。守护程序集将无法工作,因为它们不提供restartPolicy: Never
logging - 如何在 kubernetes 作业中查看 pod 的标准输出
我在 Kubernetes 中有一份工作,其中有一个 Python 脚本,该脚本将 tqdm 进度条打印到 stdout(或 stderr?)。但是,在以下情况下看不到进度条:
是否可以在作业尚未完成时查看进度条状态?当工作完成时
kubectl logs test-qpgb7
确实有效。
更新:问题似乎不在 tqdm 中,因为它也没有显示输出:
UPDATE2:sys.stdout.flush()
在打印循环中添加一个:
仅适用于打印,但不适用于 tqdm 进度。sys.stderr.flush()
还添加了注释,但没有成功。
UPDATE3:目前一个临时解决方案是:
每次都会在新行上打印。但是,如果有人发现如何在不打印到新行的情况下完成这项工作,将会很感兴趣。
kubernetes - 为什么使用 Job API 时 Kubernetes 成功计数会下降
在 GKE 上的 Kubernetes 集群上运行作业时,我注意到以下行为(这是 kubectl get jobs --watch 的输出:
如您所见,“成功”字段的值会上升和下降。这也可以在从 API 接收到的完整 yaml 中看到(只留下状态字段):
仔细阅读文档后,我没有看到任何关于这种行为的参考。这是完整的工作规范:
kubernetes - Kubernetes - Helm 不升级 cron 作业
我已经使用 Helm 将许多东西部署到了我的 Kubernetes 集群中。我的 values.yaml 文件包含很多字段。
我想要执行的唯一修改是在我的 cron 作业中添加一个额外的环境变量。(这个 cron 作业创建了一个 pod,其中 python 脚本应该能够读取这个环境变量)
更新必须保持旧的未修改值。命令:
helm upgrade [name] [path] --reuse-values
问题是 cron 作业没有升级,这意味着我的 python 脚本不能使用新的 env 变量。我能想到在 helm 的上下文中没有进行任何更改的唯一原因是因为没有修改任何值。
如何在重用旧值的同时升级我的 CronJob。任何帮助表示赞赏。
django - Kubernetes 作业的动态命令
所以希望这对 k8s 社区的非 Djangoers 有意义。我会尽力解释设置/推理。
使用 Django,我们有很多所谓的管理命令,我们可以在 Django 应用程序的范围和环境中运行这些命令,这些命令可以真正帮助开发和部署。我确信大多数其他框架具有相似的(如果不相同的话)概念。
一个例子是“ python manage.py migrate
”命令,它确保我们的代码库(迁移脚本)被应用到并反映在相关的数据库中。
大约有。我们可以运行 30 - 50 个核心命令,我们也可以创建自己的命令,以及应用任何已安装的第三方应用程序中的命令。
无论如何。最重要的一点是,我们可以并且确实可以运行很多命令。
现在,我有以下 k8s 作业来运行“迁移”命令:
该作业本质上是python manage.py migrate
在应用程序范围/环境中运行命令。它就像一个魅力:
当我们所有的测试都运行时,它在应用程序的部署中非常有用,然后我们可以构建一个镜像,“推出重启”集群,然后应用任何迁移。这是令人难以置信的无缝。(我不向 k8s 核心团队致敬,因为他们制作了如此有用的产品!)
无论如何。
我的问题本质上是这样的,我们可以在工作中对上述kubectl apply
命令应用一个参数来运行我们喜欢的任何命令吗?
一个例子是:
kubernetes - 是否可以为 Kubernetes Jobs 提供一个工作池以避免创建 Pod 时间?
到目前为止,我正在为特定的处理任务启动单独的 K8s 作业。其中一些任务需要大量的 CPU/内存,但其他任务相当简单,可以通过内存处理轻松完成。与作为 K8s 作业运行时相比,由于 pod 创建时间的原因,一个在内存中需要几毫秒的简单任务要慢得多。
我想知道是否有可能有一个专门用于那些特定 K8s 作业的工作池之类的东西,以便不太密集的任务不会产生 K8s 作业 pod 创建时间的开销。例如,如果我已经创建了 5 个 pod 并空闲等待任务,它们可以快速接收传入的请求进行处理(无需等待 pod 启动)。如果这些 pod 不足以处理传入的任务量,理想情况下它们会自动缩放以适应更多处理。我找不到明确的文档来说明我正在尝试做的事情,因此我们将不胜感激。谢谢!
kubernetes - Kubernetes 安装后作业
我有一个安装后挂钩的 kubernetes 工作。有时这个钩子会失败,但我希望 helm 升级仍然成功并忽略安装后作业中的失败。这是可行的吗?