问题标签 [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 投票
2 回答
5251 浏览

postgresql - 通过 kubernetes 作业创建或更新现有的 postgres db 容器

我有一个在 Kubernetes 集群中运行的 Postgres 数据库容器。我需要编写一个 Kubernetes 作业来连接到 Postgres DB 容器并从 SQL 文件运行脚本。我需要在这里了解两件事

  1. 运行 SQL 脚本的命令
  2. 如何在 Job.yaml 文件中加载 SQL 文件

这是我用于 Kubernetes 作业的示例 yaml 文件

0 投票
3 回答
562 浏览

kubernetes - 为无法拉取映像的 Kubernetes 作业释放 Kubernetes 资源的正确方法是什么?

语境

我们长期运行基于 docker 容器的 kubernetes 作业。容器需要资源(例如 15gb 内存,2 cpu),我们使用自动缩放器根据请求扩展新的工作节点。

设想

用户可以选择用于作业的 docker 镜像的版本,例如 1.0.0、1.1.0,甚至是在测试环境中构建镜像的代码的提交哈希。

当我们将 docker 标签保留为自由文本时,用户可以键入一个不存在的 docker 标签。因此,作业 pod 处于 ImagePullBackOff 状态。pod 保持在这种状态并保持资源锁定,以便它们不能被任何其他作业重用。

问题

什么是正确的解决方案,可以应用于 Kubernetes 本身,如果由于不存在的 docker image:tag 导致拉取失败,立即或至少快速失败 pod?

可能性

我调查了backofflimit。我已将其设置为 0,但这不会失败或删除作业。资源当然也会保留。

也许他们可以被 cron 作业杀死。不知道该怎么做。

理想情况下,甚至不应该为具有不存在 docker 映像的作业分配资源。但我不确定是否有可能轻松实现这一目标。

任何其他?

0 投票
2 回答
658 浏览

kubernetes - 当一个工作 pod 成功时完成并行 Kubernetes 作业

我有一个简单的容器化 python 脚本,我正在尝试与 Kubernetes 并行化。此脚本会猜测散列,直到找到低于某个阈值的散列值。

我只对第一个这样的值感兴趣,所以我希望创建一个 Kubernetes 作业,它会生成工作单元n,并在一个工作单元找到合适的值后立即完成

默认情况下,Kubernetes 作业会等到所有工作 pod 完成后才会将作业标记为完成。到目前为止,我一直无法找到解决方法(文档中没有提到这种工作模式),并且一直依靠通过 bash 脚本检查裸 pod 的日志来确定是否完成。

是否有本地方法来实现这一目标?如果没有,最好的方法是什么?

0 投票
1 回答
920 浏览

kubernetes - Kubernetes CronJob 创建的已完成 pod 在一段时间后被删除

我使用下面的 yaml 文件创建了一个 CronJob。

如 中所述ttlSecondsAfterFinished,k8s 将我的工作保留在集群中。但是,作业创建的 pod(完成后)会在一段时间后被删除。

根据垃圾收集策略,我的 pod 对象应该取决于我的工作。而且由于作业对象没有被垃圾收集,我的 pod 对象也应该保持活动状态。我错过了什么吗?

0 投票
1 回答
1531 浏览

kubernetes - 从作业创建或编辑 Kubernetes 密钥

我正在尝试从 Kubernetes 作业生成 Kubernetes 机密。秘密是 TLS 证书,对于弹性搜索传输,我尝试了这项工作:

但正如https://github.com/kubernetes/kubernetes/issues/62099所说,卷/certs是只读的。有没有办法像这样创建/编辑这个秘密?

0 投票
0 回答
120 浏览

kubernetes - 超额订阅的 Kubernetes 集群上的小 pod 饿死了大 pod

我们小组最近建立了一个 3 节点的 Kubernetes 集群,我们一直在使用Jobs来安排批处理任务。我们有很多工作要做,而不是在一个特别大的集群上做,所以在任何给定时间都有一堆“挂起”的 Pod 等待在集群上运行。

这些 pod 有不同的资源请求;有些比其他大得多。例如,有些 Pod 需要 4 GB RAM,有些需要 100 GB RAM。

我们遇到的问题是,只要有足够的小 pod 可用以保持集群繁忙,我们的大型 pod 就不会真正运行。一旦一个 4 GB 的 Pod 完成,Kubernetes 就会查看并看到一个 4 GB 的 Pod 可以容纳,而一个 100 GB 的 Pod 不适合,它会安排一个新的 4 GB 的 Pod。似乎从来没有决定一个 100 GB 的 Pod 已经等待了足够长的时间,并避免在特定节点上调度新的 Pod,直到足够的时间完成以使 100 GB 的 Pod 可以容纳在那里。也许它无法判断我们的 pod 来自作业并且预计最终会完成,这与 Web 服务器不同。

如何配置 Kubernetes 以确保小型 pod 不会无限期地饿死大型 pod?是否有某种具有这种行为的第三方调度程序需要我们添加到我们的安装中?或者有什么方法可以配置默认调度程序来避免这种行为?

0 投票
2 回答
1329 浏览

kubernetes - Kubernetes——如果configmap改变了如何触发job?

我们在部署过程中有一个场景,在实际应用程序容器运行并准备好之前,一个活动只需要执行一次。此活动不能作为初始化容器放置,因为初始化容器将与应用程序容器的每个副本一起执行,但在这种情况下,此活动只需执行一次。

为了实现这一点,我创建了一个 kubernetes 作业来执行该活动并完成。

  1. 有没有办法在我的应用程序容器部署定义中检查这个特定的作业已经完成?Kubernetes 中是否有任何预定义的键来存储这些元数据信息并可以用来识别作业状态?

  2. 此 Job 正在使用 configMap,并且此 Job 中使用的容器会在 Directory Server 中加载配置文件(由 configMap 提供)。如果 configMap 发生变化,有没有办法自动触发作业?我可以使用 kubectl 删除作业并重新创建,但我正在寻找自动触发器。如果不在 Kubernetes 中,OpenShift 或 HELM 中是否有任何可能的方法来执行此操作?

0 投票
1 回答
2080 浏览

kubernetes - Kubernetes:如何使用不同的用户从 root 运行脚本

我在执行 cronjob 时遇到问题。下面是代码片段。

例如。我能够执行下面的代码。这里 db2inst1 是我需要执行脚本的用户。

但是在使用 kubectl 执行时,出现以下错误

0 投票
1 回答
843 浏览

java - 如何故意让 kubernetes 的工作失败?

我有一个执行数据库验证的 java 代码图像,并且工作使用该图像。当数据库验证失败时,我希望作业故意失败。有没有办法做同样的事情?

0 投票
2 回答
2680 浏览

kubernetes - 如何在 k8s 中手动触发 kubernates 作业(不是 cron)

一旦您执行 kubectl apply ,我就有了示例 k8s 作业,该作业被触发并创建了 pod。如何控制 pod 创建?