问题标签 [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.

0 投票
1 回答
235 浏览

kubernetes - Kubernetes Job Pod 进入“未知”状态

我正在使用 Kubernetes 的 K3s 发行版,它部署在 AWS 的 Spot EC2 实例上。

我已经安排了某个处理作业,有时这个作业被终止并进入“未知”状态(作业代码异常终止)

它显示了这一点:

AWS 日志显示崩溃前的 CPU 消耗为 99%。从多个来源(1 , 2 , 3)我看到这可能是节点崩溃的原因,但没有看到那个,可能是什么原因?

谢谢!

0 投票
1 回答
731 浏览

kubernetes - 在 Kubernetes 中手动将作业的状态更改为成功

对于一些故障排除,我需要手动将正在运行的作业的状态从active更改successful为 以使其完成。作业本身就是一个没有完成的无限循环。无法使用删除作业的选项,因为它将作业置于失败状态。

更新:该作业实际上并没有失败,而是卡住了,因此我将其删除,使其进入失败状态。此外,无法更改作业的代码(它不是 bash 脚本)。

谢谢

0 投票
3 回答
67 浏览

kubernetes - 在不同主机上使用复制容器安排作业

我正在尝试运行一个 Kubernetes 作业,它将在每个主机上部署相同的 pod 并在每个 pod 中运行相同的命令(相同的执行)。集群中有 5 个工作人员worker01, worker02, ..., worker05。此定义在随机主机上安排一个 pod:

所有 pod 都应该挂载到同一个 pvc 上。不确定实现这一目标的最佳方法是什么。守护程序集将无法工作,因为它们不提供restartPolicy: Never

0 投票
0 回答
642 浏览

logging - 如何在 kubernetes 作业中查看 pod 的标准输出

我在 Kubernetes 中有一份工作,其中有一个 Python 脚本,该脚本将 tqdm 进度条打印到 stdout(或 stderr?)。但是,在以下情况下看不到进度条:

是否可以在作业尚未完成时查看进度条状态?当工作完成时 kubectl logs test-qpgb7确实有效。

更新:问题似乎不在 tqdm 中,因为它也没有显示输出:

UPDATE2:sys.stdout.flush()在打印循环中添加一个:

仅适用于打印,但不适用于 tqdm 进度。sys.stderr.flush()还添加了注释,但没有成功。

UPDATE3:目前一个临时解决方案是:

每次都会在新行上打印。但是,如果有人发现如何在不打印到新行的情况下完成这项工作,将会很感兴趣。

0 投票
0 回答
97 浏览

kubernetes - 为什么使用 Job API 时 Kubernetes 成功计数会下降

在 GKE 上的 Kubernetes 集群上运行作业时,我注意到以下行为(这是 kubectl get jobs --watch 的输出:

如您所见,“成功”字段的值会上升和下降。这也可以在从 API 接收到的完整 yaml 中看到(只留下状态字段):

仔细阅读文档后,我没有看到任何关于这种行为的参考。这是完整的工作规范:

0 投票
1 回答
877 浏览

kubernetes - Kubernetes - Helm 不升级 cron 作业

我已经使用 Helm 将许多东西部署到了我的 Kubernetes 集群中。我的 values.yaml 文件包含很多字段。

我想要执行的唯一修改是在我的 cron 作业中添加一个额外的环境变量。(这个 cron 作业创建了一个 pod,其中 python 脚本应该能够读取这个环境变量)

更新必须保持旧的未修改值。命令: helm upgrade [name] [path] --reuse-values

问题是 cron 作业没有升级,这意味着我的 python 脚本不能使用新的 env 变量。我能想到在 helm 的上下文中没有进行任何更改的唯一原因是因为没有修改任何值。

如何在重用旧值的同时升级我的 CronJob。任何帮助表示赞赏。

0 投票
1 回答
190 浏览

django - Kubernetes 作业的动态命令

所以希望这对 k8s 社区的非 Djangoers 有意义。我会尽力解释设置/推理。

使用 Django,我们有很多所谓的管理命令,我们可以在 Django 应用程序的范围和环境中运行这些命令,这些命令可以真正帮助开发和部署。我确信大多数其他框架具有相似的(如果不相同的话)概念。

一个例子是“ python manage.py migrate”命令,它确保我们的代码库(迁移脚本)被应用到并反映在相关的数据库中。

大约有。我们可以运行 30 - 50 个核心命令,我们也可以创建自己的命令,以及应用任何已安装的第三方应用程序中的命令。

无论如何。最重要的一点是,我们可以并且确实可以运行很多命令。

现在,我有以下 k8s 作业来运行“迁移”命令:

该作业本质上是python manage.py migrate在应用程序范围/环境中运行命令。它就像一个魅力:

当我们所有的测试都运行时,它在应用程序的部署中非常有用,然后我们可以构建一个镜像,“推出重启”集群,然后应用任何迁移。这是令人难以置信的无缝。(我不向 k8s 核心团队致敬,因为他们制作了如此有用的产品!)

无论如何。

我的问题本质上是这样的,我们可以在工作中对上述kubectl apply命令应用一个参数来运行我们喜欢的任何命令吗?

一个例子是:

0 投票
0 回答
48 浏览

kubernetes - K8s Pod OOM 但状态显示成功

  • 版本

k8s 1.15

  • 问题

我运行一个 2Gi 内存限制的工作,这似乎还不够。作业状态显示“已完成”,有 1 个成功的 pod;奇怪的是,pod 以 exitcode 0 终止,这被称为已成功完成,但实际上是被内存不足杀死了。

在此处输入图像描述

0 投票
1 回答
193 浏览

kubernetes - 是否可以为 Kubernetes Jobs 提供一个工作池以避免创建 Pod 时间?

到目前为止,我正在为特定的处理任务启动单独的 K8s 作业。其中一些任务需要大量的 CPU/内存,但其他任务相当简单,可以通过内存处理轻松完成。与作为 K8s 作业运行时相比,由于 pod 创建时间的原因,一个在内存中需要几毫秒的简单任务要慢得多。

我想知道是否有可能有一个专门用于那些特定 K8s 作业的工作池之类的东西,以便不太密集的任务不会产生 K8s 作业 pod 创建时间的开销。例如,如果我已经创建了 5 个 pod 并空闲等待任务,它们可以快速接收传入的请求进行处理(无需等待 pod 启动)。如果这些 pod 不足以处理传入的任务量,理想情况下它们会自动缩放以适应更多处理。我找不到明确的文档来说明我正在尝试做的事情,因此我们将不胜感激。谢谢!

0 投票
1 回答
101 浏览

kubernetes - Kubernetes 安装后作业

我有一个安装后挂钩的 kubernetes 工作。有时这个钩子会失败,但我希望 helm 升级仍然成功并忽略安装后作业中的失败。这是可行的吗?