使用命令行等待 kubernetes 作业在失败/成功时完成

2024-01-02

等待 kubernetes 作业完成的最佳方式是什么?我注意到很多使用建议:

kubectl wait --for=condition=complete job/myjob

但我认为只有工作成功才有效。如果失败,我必须做类似的事情:

kubectl wait --for=condition=failed job/myjob

有没有办法使用 wait 来等待这两个条件?如果不是,等待工作成功或失败的最佳方法是什么?


将第一个等待条件作为子进程运行并捕获其 PID。如果满足条件,该进程将退出,退出代码为 0。

kubectl wait --for=condition=complete job/myjob &
completion_pid=$!

对失败等待条件执行相同的操作。这里的技巧是添加&& exit 1以便子进程在作业失败时返回非零退出代码。

kubectl wait --for=condition=failed job/myjob && exit 1 &
failure_pid=$!

然后使用 Bash 内置wait -n $PID1 $PID2等待其中一个条件成功。该命令将捕获第一个退出进程的退出代码:

MAC 用户!注意wait -n [...PID]需要 Bash 版本 4.3 或更高版本。由于许可证问题,MacOS 永远停留在 3.2 版本。请看这个Stackoverflow 帖子 https://stackoverflow.com/a/11704224/3745474关于如何安装最新版本。

wait -n $completion_pid $failure_pid

最后,您可以检查实际的退出代码wait -n查看作业是否失败:

exit_code=$?

if (( $exit_code == 0 )); then
  echo "Job completed"
else
  echo "Job failed with exit code ${exit_code}, exiting..."
fi

exit $exit_code

完整示例:

# wait for completion as background process - capture PID
kubectl wait --for=condition=complete job/myjob &
completion_pid=$!

# wait for failure as background process - capture PID
kubectl wait --for=condition=failed job/myjob && exit 1 &
failure_pid=$! 

# capture exit code of the first subprocess to exit
wait -n $completion_pid $failure_pid

# store exit code in variable
exit_code=$?

if (( $exit_code == 0 )); then
  echo "Job completed"
else
  echo "Job failed with exit code ${exit_code}, exiting..."
fi

exit $exit_code
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用命令行等待 kubernetes 作业在失败/成功时完成 的相关文章

  • Rabbit mq - 等待 Mnesia 表时出错

    我已经在 Kubernetes 集群上使用 Helm Chart 安装了 RabbitMQ rabbitmq pod不断重新启动 在检查 pod 日志时 我收到以下错误 2020 02 26 04 42 31 582 warning lt
  • 容器中的 JVM 计算处理器错误?

    最近我又做了一些研究 偶然发现了这一点 在向 OpenJDK 团队抱怨之前 我想看看是否有其他人观察到这一点 或者不同意我的结论 因此 众所周知 JVM 长期以来忽略了应用于 cgroup 的内存限制 众所周知 现在从 Java 8 更新某
  • 如何将我的 pod 日志存储在持久存储中?

    我已经使用以下命令为我的 Pod 生成了日志kubectl logs pod name 但我想将这些日志保存在一个卷 某种持久存储 中 因为如果 Pod 宕机 容器日志将被清除 有没有办法做到这一点 我必须写某种脚本吗 我已经阅读了很多答案
  • 黑莓 - 带动画的加载/等待屏幕

    有没有办法显示 加载 屏幕带动画在黑莓手机上 选项 PME动画内容 多线程 图像集 定时器 计数器 标准轮辋 API 其他方式 有这个吗 Thanks 费明 安东尼 1 谢谢大家 你们给了我部分答案 我的最终解决方案 1 创建或生成 免费
  • 我可以将应用程序数据存储在 kubernetes 配置资源中吗?

    我正在尝试为我的应用程序找到一个数据库 对象存储 该应用程序实际上是 ISTIO 网络路由 API 的包装器 基本上简化了我的网络的 ISTIO 配置 Kubernetes k8s 自定义资源定义 CRD 似乎符合我的要求 也喜欢 CRD
  • Kubernetes 反关联规则将 Deployment Pod 分散到至少 2 个节点

    我在 k8s 部署中配置了以下反关联性规则 spec selector matchLabels app my app environment qa template metadata labels app my app environmen
  • nslookup 无法解析 Kubernetes.default

    我在我的 minikube 设置上尝试了以下命令来验证 dns 是否正常工作 kubectl exec ti busybox nslookup kubernetes default 但这是我得到的输出 服务器 10 96 0 10 地址1
  • container_memory_working_set_bytes 与 process_resident_memory_bytes 和total_rss 之间的关系

    我希望了解以下关系 容器内存工作集字节 vs 进程驻留内存字节 vs 总计RSS 容器内存 rss 文件映射以便更好地配备OOM可能性警报系统 这似乎违背了我的理解 这让我现在感到困惑 如果容器 pod 运行单个进程 执行用 Go 编写的编
  • 添加istio出口网关后,Pod无法curl外部网站

    我正在关注 Istio 文档 https istio io docs examples advanced egress egress gateway https istio io docs examples advanced egress
  • Kubernetes 基本 Pod 日志记录

    您好 我正在尝试设置基本日志记录以将所有 Pod 日志放在一个位置 以下是我创建的 pod spec 但在上述位置找不到日志的踪迹 下面的模板中可能缺少什么 apiVersion v1 kind Pod metadata name coun
  • 使用 WebDriver 暂时绕过隐式等待

    当使用隐式等待时 正如这里所建议的 https stackoverflow com a 10950905 56285 我仍然有时想要断言即时元素不可见或不存在 换句话说 我know有些元素应该隐藏 并希望我的测试做出这样的断言fast 而不
  • Kubeadm 加入失败:无法请求集群信息

    我有两台服务器作为本地服务器网络上的主节点和工作节点 master node 10 20 20 214 worker node 10 20 20 218 在主节点中 我成功使用 kubeadm init 设置 Calico 网络 它报告消息
  • 如何在没有部署 K8S 的情况下重启 pod?

    我部署了一个弹性搜索 https www elastic co elasticsearch使用此命令在 K8S 上集群helm install elasticsearch elastic elasticsearch 我可以看到 Pod 正在
  • rancher rke up etcd 主机运行状况检查远程错误:tls:错误证书

    rke debug up config cluster yml etcd 主机上的运行状况检查失败并出现错误 DEBU 0281 etcd 无法检查 etcd 主机 x x x x 的运行状况 无法获取主机 x x x x 的 health
  • 安装SIGTSTP前台进程

    我正在尝试为正在运行的前台进程安装 CTRL Z SIGTSTP 处理程序 我设置了处理程序 sigaction 就在我之前wait在父级中 这是正确的地方吗 好像不太好用 EDIT 我正在写一个外壳 这是我的代码的概要 我目前在父级中设置
  • Kubectl 推出重启以实现有状态集

    根据kubectl 文档 https kubernetes io docs reference generated kubectl kubectl commands rollout kubectl rollout restart适用于部署
  • 从我的应用程序 Helm 图表配置第三方 Helm 图表

    我似乎在任何地方都找不到任何关于此的明确信息 但是 Helm 图表中是否有可能需要第三方 例如stable jenkins 并指定配置值 我看到的所有示例都是为了运行helm install直接命令 但我希望能够将其配置为我的应用程序的一部
  • 我应该在 Kubernetes 前面添加 DMZ 吗?

    Kubernetes Ingress 是否足够安全 可以避免在 Kubernetes 前面添加 DMZ 来暴露 Pod 和服务 如果有人 黑进 Pod 会发生什么 Thanks 这是一个意见问题 所以我会用一个选项来回答 如果您遵循 这是非
  • 如何更改 Kubernetes 中的文件系统观察程序限制 (fs.inotify.max_user_watches)

    我在用着pm2 https github com Unitech pm2查看保存我的应用程序服务器的 NodeJS 程序源代码的目录 该程序在 Kubernetes 集群中运行 但是 我收到此错误 ENOSPC System limit f
  • microk8s加入节点没有效果

    我确实命令 om 主节点 microk8s add node From the node you wish to join to this cluster run the following microk8s join 192 168 0

随机推荐

  • 有效合并大镶木地板文件

    我正在使用 parquet tools 来合并 parquet 文件 但 parquet tools 似乎需要与合并文件一样大的内存 我们是否有其他方法或 parquet tools 中的可配置选项来更有效地使用内存 因为我在 hadoop
  • 如何在android中的textview中缩进文本?

    我试图通过制作单独的段落来使文本更容易阅读 我尝试在字符串资源中的文本之前添加空格 但它不起作用 我想知道是否可以向文本视图或字符串资源本身添加属性 谢谢罗布 您可以使用 t 表示制表符 n 表示换行符 它肯定有效 并将此属性写入 xml
  • 无法使用 var 和 foreach 将 void 分配给隐式类型局部变量

    我正在尝试列出表单中的所有按钮名称以使用代码列出 var v new List
  • 如何阅读 FSM 图

    我如何获取该图并将其转换为可用的程序 我不太确定如何阅读该图 引导我完成它 也许会展示一个代码示例以及它与图表的关系 里面有文字的圆圈是州 文本描述了状态是什么 虚线箭头指向起始状态 传出箭头确定此状态可以更改的位置 箭头旁边是被线分为上半
  • Lua中如何快速初始化关联表?

    在Lua中 您可以通过以下方式创建表 local t 1 2 3 4 5 但是 我想创建一个关联表 我必须按以下方式进行 local t t foo 1 t bar 2 下面给出了一个错误 local t foo 1 bar 2 有没有办法
  • 在 QML 中解析 JSON [重复]

    这个问题在这里已经有答案了 相关的 Qt 文档应该是this http doc qt io qt 5 json html 但它没有提到 QML 然而 在网上的许多地方 我发现了类似功能的用法JSON parse在 QML JS 中 有这样的
  • 如何将 MediatR 与我的业务层解耦

    早上好 我在项目中使用域事件 我发现实现它的最简单方法是使用 MediatR 但我不希望我的项目直接依赖它 我想应用依赖倒置来隐藏库 由于 INotification 接口 当前代码依赖于 Mediator public class Ema
  • 片段已在 viewpager 中添加了 IllegalStateException

    我正在使用 viewpager 来显示图片 我基本上只需要三个片段 上一个要预览的图像 当前显示的图像和下一个要预览的图像 我想只显示上一张和下一张图像的预览 当用户实际滑动到它时 它将更改为完整图像 所以我想只使用 3 个片段来实现这一点
  • Ellipsoid R 函数 - 查找一个点是否适合 - R 脚本

    我有一个 3D 椭球函数 ellipsoid lt function center c 0 0 0 radius 1 shape diag 3 segments 51 angles lt 0 segments 2 pi segments e
  • 如何从返回根参数和数组的 JSON API 调用创建 Backbone Collection

    Backbone js 菜鸟在这里 我想从我的应用程序外部的 JSON API 创建一个集合 具体来说 api来自堆栈溢出 http api stackoverflow com 1 1 我知道我应该从这样的集合中设置 url 参数 App
  • 错误:连接超时:连接。如果您使用 HTTP 代理,请在 IDE 或 Gradle 中配置代理设置

    我厌倦了这个错误 我不知道如何解决这个错误 它没有设置为自动配置模式 我正在尝试自动配置它 但它需要自动配置 URL 我不知道该 URL 它给我们导入的所有项目带来了同样的错误 请帮助这个错误 我已经尝试了很多天了 如果您不使用任何代理 那
  • CDN如何访问数据库?

    具体来说 我将使用的数据库是 mongodb 有问题的文件是图像 我的问题是 如果您将图片存储在数据库中而不是常规的静态文件结构中 这是如何工作的 我想您可以将 CDN 文件的链接与图片一起存储在数据库中 所以 image cdnurl f
  • 如何动态更改 R 中现有函数的一行

    我偶尔会遇到带有限制性参数的函数 这些社区贡献的函数绝对很棒 否则我希望能够定义一个新函数 动态地改变困扰我的行为 而不必将整个函数重写到脚本文件中 我知道如何在 R 中可视化函数 只需键入函数名称即可 但是如何用修改后的定义保存 修改和定
  • Android神秘的空指针异常

    自从我上传我的应用程序以来 我收到了许多 java lang NullPointerException 崩溃报告 我正在努力理解这个问题 因为它不会在我亲自测试过的模拟器或物理设备上崩溃 以下是其中一份报告的示例 java lang Ill
  • 在Boost几何C++库中我添加的点的顺序重要吗?

    我是 boost 的新手 甚至是 boost geometry 的新手 所以我的问题是 boost geometry 向多边形添加点的顺序重要吗 例如 这一样吗 create a polygon polygon p p outer push
  • 获取前导空白

    我刚刚写了这个方法 我想知道框架中是否已经存在类似的东西 这似乎只是这些方法之一 如果没有 有更好的方法吗
  • 如何使用 python 和 selenium 在 Internet Explorer(IE) 模式下打开 Microsoft Edge?

    我有一个网页 其中的弹出窗口仅在 Internet Explorer 中打开 而不能在其他浏览器 包括 Chrome Fire Fox 和 Edge 中打开 我必须在无头模式下从此类弹出窗口中提取数据的唯一解决方案是在 Internet E
  • Express js 使用 cookie 重定向,cookie 不存在

    所以我使用 Passport js 实现了 facebook 登录 我还实现了 Cookie 策略 以使用良好的 ole 用户名 密码登录 我的设置是 Express js 后端和 React 前端 后端和前端运行在不同的服务器和域上 ba
  • 通过代码为 NSLayoutConstraint 设置“尊重语言方向”

    我怎样才能设置Respect Language Direction当通过如下代码创建约束时 水平约束的属性为 YES 或 NO NSLayoutConstraint constraint NSLayoutConstraint constra
  • 使用命令行等待 kubernetes 作业在失败/成功时完成

    等待 kubernetes 作业完成的最佳方式是什么 我注意到很多使用建议 kubectl wait for condition complete job myjob 但我认为只有工作成功才有效 如果失败 我必须做类似的事情 kubectl