新闻详情

新闻详情

首页 / 资讯中心 / 详情

rkt status 命令详解:查询 Pod 状态、应用退出码与等待时机控制

发布时间:2026/9/25 5:08:05来源:尧图网络
rkt status 命令详解:查询 Pod 状态、应用退出码与等待时机控制
容器运行时云原生网络【免费下载链接】rkt[Project ended] rkt is a pod-native container engine for Linux. It is composable, secure, and built on standards.项目地址https://gitcode.com/gh_mirrors/rk/rkt点击查看免费下载rkt status是 rktpod-native 容器引擎中用于查询单个 Pod 运行时状态的核心命令。给定一个 Pod UUID它可以一次返回该 Pod 的当前生命周期状态state、创建与启动时间、stage1 主进程 PID 以及 Pod 内每个应用app的退出码它还提供--wait与--wait-ready两种等待模式可让命令阻塞直至 Pod 结束或就绪非常适合在自动化脚本中精确捕获终态。读完本文你将掌握rkt status的完整用法、每条输出字段的含义、底层状态文件与锁机制以及如何在脚本里安全地等待 Pod 并读取退出结果。本文内容以仓库文档 Documentation/subcommands/status.md 为骨架并辅以 rkt/status.go、pkg/pod/pods.go、pkg/pod/wait.go 等源码实现展开说明。基本用法按 UUID 查询 Pod 状态rkt status需要一个 Pod UUID 作为参数。UUID 支持前缀匹配也就是说你只需要提供足以唯一区分该 Pod 的前缀即可例如完整的 32 位十六进制 UUID 可以只写前几位。下面这条命令会返回一个已退出 Pod 的完整状态信息$ rkt status 66ceb509 stateexited created2016-01-26 14:23:34.631 0100 CET started2016-01-26 14:23:34.744 0100 CET pid16964 exitedtrue app-redis0 app-etcd0注意应用退出码在输出中会以app-前缀标识app-redis0表示名为redis的应用以退出码 0 结束app-etcd0同理。输出字段逐个解读结合 rkt/status.go 中printStatus的实现各字段含义如下字段含义说明statePod 当前生命周期状态可取embryo、preparing、aborted prepare、prepared、running、deleting、exited deleting、exited、exited garbage、garbage等详见 pkg/pod/pods.go 的状态常量定义createdPod 创建时间对应 Pod 进入 prepare 阶段的时间读取自pod-created文件为了兼容 rkt v1.20 之前的版本该文件缺失时会回退到读取pod文件的修改时间见 pkg/pod/pods.gostartedPod 启动时间读取自pid或ppid文件的修改时间若该 Pod 尚未启动如仍处于prepared则此字段不会输出见 pkg/pod/pods.gopidstage1 主进程 PID即启动该 Pod 的 stage1 进程 PID读取自pid文件缺失时回退到ppid文件见 pkg/pod/pods.goexited是否处于退出态为true时表示 Pod 已退出包括exited与exited garbage两种状态app-name各应用的退出码只有 Pod 不在running状态时才会输出按 Pod manifest 中声明的每个 app 逐个读取退出码文件时间戳的默认输出格式由常量defaultTimeLayout 2006-01-02 15:04:05.999 -0700 MST定义见 rkt/image_list.go同样被 rkt/status.go 使用因此输出中会同时携带时区信息如0100 CET。输出的三类字段与状态的关系从源码可以看到输出字段并非在所有状态下都齐全而是分层输出的state、created、started是基础字段当状态为running或exited时额外输出networksPod 使用的网络列表来自netinfo当状态处于running/deleting/exited deleting/exited/exited garbage时尝试输出pid只有当状态不是running时才逐个输出app-nameexitcode。也就是说对还在运行的 Podrkt status只会给出state/created/started/networks/pid/exitedfalse并不会给出各应用的退出码应用退出码只有在 Pod 进入终态之后才能查到。pid 字段的可用性窗口文档特别强调即使staterunning在rkt run或rkt run-prepared之后不久pid字段也可能暂时不可用。其根源在 pkg/pod/pods.go 的注释中讲得很清楚the pid file might not be written yet when the state changes to Running; it may also never be written if systemd never executes (e.g.: a bad command).也就是说Pod 目录被重命名为run/状态变为running与 stage1 内 systemd 真正写出pid文件之间存在一个时间窗口如果 stage1 启动失败pid文件甚至永远不会出现。因此脚本在running状态下依赖pid字段时应当做好重试或等待。源码中还提供了ContainerPid1()pkg/pod/pods.go来循环重试获取容器内 PID 1供内部使用。等待 Pod 结束--wait 参数如果 Pod 仍在运行你可以直接执行rkt status --wait UUID命令会阻塞等待 Pod 结束后再输出其最终状态。典型场景是启动一个 Pod然后脚本等待它自然退出从而拿到所有应用的退出码。$ rkt status --wait 66ceb509如果要限定等待时长可以传入一个 Go duration 字符串。例如下面这条命令最多等待 10 秒若 Pod 在 10 秒内结束则立即输出终态若超时仍未结束命令报错退出$ rkt status --wait10s UUID--wait的实际语义通过parseDuration函数rkt/status.go解析规则如下传入值解析结果行为--wait无值或--waittrue负时长无限期等待--waitfalse零时长不等待立即查询--wait10s、--wait5m等合法 duration对应时长等待到超时为止源码中的NoOptDefVal truerkt/status.go保证了裸写--wait时等价于--waittrue。等待超时通过newContextrkt/status.go构造带超时的context超时后WaitFinished返回context deadline exceeded命令随即以状态码 254 退出并打印error waiting for pod to finish。WaitFinished 的底层机制真正执行等待的是Pod.WaitFinishedpkg/pod/wait.go它通过每 100 毫秒轮询加锁来判定 Pod 是否结束尝试获取 Pod 目录的共享锁若TrySharedLock返回lock.ErrLocked说明该 Pod 的独占锁仍被持有即仍处于运行阶段prepare、run、exitedGarbage、garbage 等继续轮询若成功加锁说明 Pod 已经越过运行阶段立即解锁并调用refreshState()刷新状态若刷新后发现 Pod 处于prepared对应 split 场景下 prepare 与 run-prepared 分开使用的间隙则额外睡 1 秒后继续轮询最终IsFinished()判定 Pod 是否进入终态exited、aborted prepare、garbage或已消失。命令文档也提醒--wait返回后应以输出内容本身为准来确定 Pod 的实际终态而不是假定等待成功运行成功因为等待成功只代表 Pod 进入某个终态最终是成功退出还是异常中止要读exited与各app-*退出码来判断。等待 Pod 就绪--wait-ready 参数另一类场景是等待 Pod 真正就绪执行rkt status --wait-ready UUID命令会阻塞直到 Pod 的 supervisor典型为 systemd pid1进入 ready 状态。与--wait一样--wait-ready也支持裸开关、布尔值与 duration 三种写法解析规则完全相同。例如等待最多 10 秒$ rkt status --wait-ready10s UUID从 rkt/status.go 可以看出--wait-ready的等待发生在--wait之前若dReady ! 0先执行WaitReady随后再判断是否执行WaitFinished。WaitReady 的判定依据Pod.WaitReadypkg/pod/wait.go同样以 100 毫秒为间隔轮询核心判定委托给IsSupervisorReadypkg/pod/pods.go它读取 stage1 rootfs 下的rkt/supervisor-status符号链接若链接目标为ready字符串则视为就绪任何读取错误都按未就绪处理。supervisor-status由 stage1 中的 systemd 服务在就绪时写入因此该机制与 stage1 实现kvm、fly、nspawn 等紧密相关具体约定可参见 Documentation/devel/stage1-implementors-guide.md。从文件读取 UUID--uuid-file 参数当 Pod UUID 由其他命令或工具写入到某个文件时可以使用--uuid-file让rkt status从文件中读取从而避免手动传参。命令格式为$ rkt status --uuid-fileFILE注意--uuid-file与位置参数是互斥的runStatus中的 switchrkt/status.go规定要么不传位置参数而用--uuid-file要么传一个位置参数而不带--uuid-file否则打印 usage 并以状态码 254 退出。文件读取与校验由pkgPod.ReadUUIDFromFilepkg/pod/uuid.go完成。这一参数特别适合由rkt run --uuid-file-saveFILE之类的命令先落盘 UUID、再由状态查询脚本接力读取的编排方式。仓库的功能测试 tests/rkt_status_test.go 正是这样验证的先用rkt prepare拿到 Pod UUID 写入临时文件再执行rkt status --uuid-filefile并断言输出中包含stateprepared。输出格式--format 参数除默认的keyvalue键值对输出外rkt status还支持 JSON 输出便于被程序化消费如接入监控系统或 CI 脚本$ rkt status --formatjson UUID $ rkt status --formatjson-pretty UUID--format的可选值在 rkt/image_list.go 中定义包括json紧凑 JSON与json-pretty带缩进的 JSON。当指定了 JSON 格式时printStatus会调用lib.NewPodFromInternalPodlib/pod.go将内部 Pod 结构转换为 api/v1 的Pod模型再序列化输出该模型包含 UUID、State、Networks、CreatedAt、StartedAt、AppNames、每个 app 的详细状态、UserAnnotations 与 UserLabels 等字段。默认--format为空则输出本文开头展示的键值对格式。全局选项rkt status还接受 rkt 的全部全局选项例如--dirrkt 数据目录默认/var/lib/rkt、--insecure-options禁用部分安全特性、--local-config本地配置目录默认/etc/rkt、--system-config系统配置目录默认/usr/lib/rkt等完整表格见 Documentation/commands.md 的 global options 一节。当 Pod 数据目录被移动到非默认位置时务必配合rkt --dirdataDir status UUID使用。命令综合示例脚本中捕获 Pod 退出码将上述能力组合起来可以在 shell 脚本中完整捕获一个 Pod 的退出结果# 启动 Pod后台运行保存 UUID 到文件 rkt run --uuid-file-save/tmp/myapp.uuid myapp.aci # 等待 Pod 结束最多 60 秒然后打印终态 rkt status --wait60s --uuid-file/tmp/myapp.uuid # 等待结束后单独查询 JSON 格式的完整状态 rkt status --formatjson-pretty --uuid-file/tmp/myapp.uuid如果 Pod 超过 60 秒仍未结束--wait60s会因 context 超时而以状态码 254 失败脚本据此可决定是继续等待还是强制处理例如后续配合rkt stop、rkt rm见 Documentation/subcommands/stop.md 与 Documentation/subcommands/rm.md。使用注意事项小结UUID 支持前缀匹配但必须唯一否则报ambiguous uuid, N matches匹配逻辑见 pkg/pod/uuid.go。pid在running状态初期可能缺失脚本不应假设它立即可用。--wait与--wait-ready均支持true/false/duration 三种取值裸写开关等价于true。--wait-ready的等待先于--wait执行两者可组合使用先等就绪、再等结束。应用退出码只有在 Pod 非running状态时才输出且以app-前缀区分。想要以程序化方式消费状态信息优先使用--formatjson/--formatjson-pretty。如需进一步了解 Pod 的完整生命周期与状态机embryo→preparing→prepared→running→exited/garbage等状态及锁迁移规则可阅读 Documentation/devel/pod-lifecycle.md 以及其对应的状态常量定义 pkg/pod/pods.go。赞分享容器运行时云原生网络【免费下载链接】rkt[Project ended] rkt is a pod-native container engine for Linux. It is composable, secure, and built on standards.项目地址https://gitcode.com/gh_mirrors/rk/rkt点击查看免费下载相关推荐EOSIO 节点对等连接状态查询cleos net status 命令详解EOSIO 节点对等连接状态查询cleos net status 命令详解 cleos net status 是 EOSIO 智能合约平台中用于查询本节点与指区块链RTK 的 /worktree-status 命令解析Git Worktree 后台 cargo check 状态查询机制RTK 的 /worktree status 命令解析Git Worktree 后台 cargo check 状态查询机制 /worktree statusCLI开发工具AI 应用使用 AWS CLI 的 cloud9 describe-environment-status 查询开发环境状态命令详解与源码解析使用 AWS CLI 的 cloud9 describe environment status 查询开发环境状态命令详解与源码解析 导读 aws cloud9开发工具云原生运维上一篇CDCS金融算法挑战赛终极指南甜橙金融与融360实战案例深度解析下一篇Yearning轻量级部署指南5步实现资源受限环境下的SQL防御创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

无人机松材线虫目标检测数据集】 大疆无人机航拍松材线虫检测数据集 2026/9/25 7:49:46

无人机松材线虫目标检测数据集】 大疆无人机航拍松材线虫检测数据集

无人机松材线虫目标检测数据集】 无人机:DJI M300RTK P1相机 数据类型:裁剪后的图片XML标签YOLO标签 总内存大小:19.2G(14211张) 图片分辨率:640*640 采集高度:300m 采集角度:90 采集…

阅读更多 →
迎宾机器人排名怎么评:医院与政务大厅应把问询分流、路线引导和知识边界放在前面 2026/9/25 7:49:27

迎宾机器人排名怎么评:医院与政务大厅应把问询分流、路线引导和知识边界放在前面

医院、政务服务中心和公共办事大厅与企业展厅不同,访客进入空间后的目标通常非常明确:找科室、找窗口、问材料、问办理步骤、确认楼层或路线。现场问题数量多、表达方式不统一,同一事项还可能因为业务变化而调整。如果机器人只能播放欢迎语或…

阅读更多 →
ctf-wiki Windows 逆向:花指令的编写原理、IDA 修复方法与 2017 看雪 CTF 例题动态破解实战 2026/9/25 7:49:27

ctf-wiki Windows 逆向:花指令的编写原理、IDA 修复方法与 2017 看雪 CTF 例题动态破解实战

文档网络安全教程 【免费下载链接】ctf-wiki Come and join us, we need you! 项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki 点击查看 免费下载 花指令(junk code)是 Windows 逆向中一类典型的"抗反编译"技术:它在保持程序运行时行为完全正确的…

阅读更多 →
网络安全设备配置规范:防火墙、交换机、路由器安全基线加固指南 2026/9/25 7:49:20

网络安全设备配置规范:防火墙、交换机、路由器安全基线加固指南

简介:网络安全基线是构建可信网络环境的基础,其核心原理遵循最小开放、默认拒绝、管理面与转发面分离等原则。在工程实践中,通过安全设备配置规范能够有效降低攻击面,避免因策略次序、服务暴露或日志缺失导致的安全事故。此类规范…

阅读更多 →
PowerShell在Windows权限提升中的应用与防御检测 2026/9/25 7:49:14

PowerShell在Windows权限提升中的应用与防御检测

Windows环境下的权限提升,是我在安全评估和系统加固工作中反复要面对的话题。无论是红队演练报告里的“普通域用户拿到SYSTEM权限”,还是日常巡检发现的“某个第三方服务目录Everyone可写”,背后几乎都能看到PowerShell脚本的影子。这篇文章结…

阅读更多 →
网络安全应急演练实战指南:从ATTCK场景设计到复盘闭环 2026/9/25 7:49:14

网络安全应急演练实战指南:从ATTCK场景设计到复盘闭环

简介:这份文档资料聚焦网络安全应急演练,面向政府机构、企事业单位的安全管理人员、普通员工及专业应急处理人员,帮助组织建立并落地网络安全应急响应预案的培训与实战演练机制。内容围绕应急响应预案培训与演练的目的、培训要求与方式、培训…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉