问题标签 [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 作业或 Pod
我正在寻找一种从命令行快速运行/重新启动 Job/Pod 并覆盖要在创建的容器中执行的命令的方法。
对于上下文,我有一个 Kubernetes 作业,它作为我们部署过程的一部分被执行。有时该作业会崩溃,我需要在作业创建的容器内运行某些命令来调试和修复问题(随后的作业会成功)。
到目前为止,我这样做的方式是:
- 复制 Job 的 YAML,保存到文件中
- 清理 YAML(删除 Kubernetes 管理的字段)
command:
将字段更改为tail -f /dev/null
(以便容器保持活动状态)kubectl apply -f job.yaml && kubectl get all && kubectl exec -ti pod/foobar bash
- 在容器内运行命令
kubectl delete job/foobar
当我完成时
这是非常乏味的。我正在寻找一种方法来执行以下操作
我无法使用该run
命令创建 Pod:
因为我尝试重新启动的作业具有volumeMounts
我需要重用的某些和其他配置。所以我需要类似的东西kubectl run --from-config job/foobar
。
有没有办法实现这一点,还是我坚持使用 YAML 定义文件?
编辑:Job YAML 看起来大约。像这样:
kubernetes - 有没有办法为 helm post-install hook 启用 shareProcessNamespace?
我正在运行一个带有 3 个容器(telegraf、fluentd 和一个内部代理)的 pod,它使用shareProcessNamespace: true
.
我编写了一个 python 脚本来从中央控制器 API 端点获取电报的初始配置和流利的。由于这是一次性操作,我计划使用 helm post-install hook。
在获取配置之前,python 脚本需要检查 telegraf/fluentd/agent 进程是否已启动。我打算等待(超时)直到pgrep <telegraf/fluentd/agent>
返回 true,然后触发 API。有没有办法启用shareProcessNamespace
安装后挂钩?谢谢。
PS:目前,代理调用python脚本及其自己的启动脚本。它有效,但它很笨拙。我想将其移出代理容器。
kubernetes - Kubernetes Job Informer 回调调用很晚
我们正在使用 kubernetes informer(源代码)从 kubernetes api 服务器接收作业更新事件,并且在我们收到这些事件后,我们通常会从集群中删除作业记录。
最近我们发现有很多作业记录留在集群中,因为客户端没有立即收到来自 kuberntes API Server 的 Kubernetes Job Update Event,而是一个多小时后才收到这些事件。
以下是一些信息:
工作通知回调
集群信息
kubernetes 版本:
v1.20
client-go 版本:v0.19.6
其他信息
那里有1000多个kubernetes Jobs,它们都处于Complete状态,我们不删除它们只是因为我们需要它们来调试其他业务逻辑。但是我们发现,去掉那些kubernetes作业,重启informer后,一切都恢复正常了。
如何解决通知延迟?反正有调试这种问题吗?
kubernetes-helm - 为什么 helm3 install trigger pre-delete 而不是在 Helm2
我有一个项目需要使用mutating Webhook
,基于namespaceselector
,需要首先将特定标签添加到命名空间。
我使用了三个钩子,hook1(pre-install, pre-delete,etc)为hook2(pre-install)创建RBAC以通过Job和hook3(pre-delete)为名称空间添加标签以删除Job Hook 内容的标签如下:
Hook1设置权限
hook2将标签添加到命名空间
hook3从 hook2 删除标签到命名空间
在图表部署期间,由于未找到服务帐户(ns-edit),hook2 和 hook3 作业都被触发并且未完成。
但是在helm2中可以正确执行,即触发hook1和hook2helm install
添加命名空间标签,触发hook1和hook3helm delete --purge
删除hook2添加的标签
为什么 helm2 和 helm3 在Hook上有如此巨大的差异。
请问如何修改才能实现两者的统一?如果没有,在helm3中如何设计
我真的很感激这方面的任何帮助。
注:helm2 为 v2.17.0,helm3 为 v3.3.0
kubernetes - 为什么 Kubernetes 作业既没有运行,也没有成功或失败?
我有一份工作显示为不完整:
通常,这项工作将在约 35 秒内完成。这最后一个flight-supplier-cache-import-27304560
已经不完整了 10 小时。
然后我看到了
这甚至意味着什么?不运行,成功还是失败?
请帮忙。
kubernetes - dockerfile 和 kubernetes 工作(需要帮助)
我有我的 dockerfile,我在其中使用了 postgres:12 映像,并使用一些 ddl 脚本对其进行了修改,然后我构建了这个映像,我可以通过 docker run 命令运行容器,但是我如何使用 Kubernetes 作业来运行构建映像,如我在k8s上没有很好的经验。
这是我的 dockerfile 在这里你可以看到它。
码头工人建造。-t dockerdb
我如何使用以下要求自定义以下代码
dockerfile - Terraform 和 k8s 作业
我需要一个帮助。
我在谷歌容器注册表中推送了我的 docker 映像,根据我的客户,我需要使用 terraform kubernetes 作业。
Dockerfile:
docker build --build-arg POSTGRES_PASSWORD=xyzw12345 。-t hello-world:postgres docker push hello-world:postgres
我可以运行 terraform kubernetest 作业以进入容器内部,但我看不到任何在 5432 上工作的东西,我可以从 telnet 看到,任何人都可以帮助我做错了什么。
我只想登录到容器中,可以在 pgAdmin 的帮助下查看数据库详细信息。我可以在本地执行相同的步骤而不会出现任何错误。
感谢开发
kubernetes - 如果达到内存或 CPU 限制,则垂直缩放作业
我有一个从 BigQuery 执行下载的作业(使用单个容器),下载数据的大小根据所选表的不同而变化很大。有时我的 pod 达到内存限制并重新启动,但由于数据大小相同,它会由于内存限制再次失败(退出代码 137 的 Oomkilled 错误)。
我正在使用谷歌 Kubernetes 引擎。
docker - 如何在 kubernetes 的每个节点而不是 daemonset 中运行作业
有一个 100 个节点的 kubernetes 集群,我必须手动清理特定的图像,我知道 kubelet 垃圾收集可能会有所帮助,但它不适用于我的案例。上网浏览后,我找到了一个解决方案——docker in docker,来解决我的问题。
我只想删除每个节点中的图像一次,有没有办法在每个节点中运行一次作业?
我检查了 kubernetes 标签和 podaffinity,但仍然没有任何想法,任何机构都可以提供帮助吗?
另外,我尝试使用 daemonset 来解决问题,但事实证明它只能删除部分节点而不是所有节点的图像,我不知道可能是什么问题......
这是守护程序集示例:
kubernetes - 使用 Helm 更新 Kubernetes 作业
我有一个包含 Kubernetes 作业的掌舵图,但不幸helm upgrade
的是它无法工作,因为图像名称是不可变的,所以在逻辑上我需要做一个delete
,但如果它们首先被定制,install
我会失去我的集合。values.yaml
如何在删除图表之前保留这些值并将它们用于新安装以模拟升级?我在文档或此处找不到任何内容。
谢谢