获取最近创建的 pod 的名称

roo*_*099 7 jsonpath openshift kubernetes

在 OpenShift 中,有没有比这个更优雅的方法来获取应用程序中最近创建的 pod 的名称my_app

name=$(oc get pods -l app=my_app -o=jsonpath='{range.items[*]}{.status.startTime}{"\t"}{.metadata.name}{"\n"}{end}' | sort -r | head -1 | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)

这个想法是排序.status.startTime并输出一个.metadata.name。到目前为止,我还没有使用成功oc get用这两个选项--sort-by,并-o jsonpath在同一时间,所以我在这个版本回落到UNIX管道。

我正在使用 OpenShift v3.9。我还为 Kubernetes 标记了这个问题,因为它大概适用于kubectl(而不是oc)以类似的方式(没有-l app=my_app)。

小智 7

尝试这个:

kubectl get pods --sort-by=.metadata.creationTimestamp -o jsonpath="{.items[0].metadata.name}"
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用 jsonpath 获取结果数组中的最后一个元素。而不是 0,使用 '-1:' `kubectl get pods --sort-by=.metadata.creationTimestamp -o jsonpath="{.items[-1:].metadata.name}"` (6认同)
  • 这会以相反的顺序返回结果,如何获取最新的 pod,而不是最旧的 pod? (2认同)