我正在运行一个 kubernetes 作业,将其删除,然后快速连续地重新启动它。
我正在使用以下命令来获取与我的工作相关的 pod,以便我可以运行kubectl logs $POD
.
kubectl get pods -l job-name=myjob --output=jsonpath='{.items[*].metadata.name}'
但在删除作业后,上述命令会立即返回两个 pod,一个尚未删除,另一个是新的。
kubectl describe jobs/myjob
显示了正确的 pod 名称,我可以从那里的文本中解析它,这样我就可以得到最近开始的作业的唯一 pod 名称,但这似乎很老套。
有没有更好的方法从特定工作中获取 pod 名称?
通知事项
职位名称:他们是给我们的!人类,kubernetes 而是根据标签或注释跟踪子对象。在这种情况下,控制器 uid
Pulling Unique ID's : 快速的方法,来自 kubectl 的 jsonpath。与 jq 的语法相同,只是包装在 {} 中。
jsonpath={.metadata.labels.controller-uid}
您总是可以尝试对作业使用 jsonpath 输出来获取控制器 uid。这应该与单个 pod 唯一匹配,因为它是在创建作业时生成的,即使作业具有相同的名称。例子:
例子
我希望这会有所帮助,祝你好运!