在OpenShift中,是否有比该方法更优雅的方法来获取应用程序my_app
中最近创建的pod的名称?
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}')
这个想法是按.status.startTime
排序并输出一个.metadata.name
。到目前为止,我还没有成功将oc get
和--sort-by
两个选项同时使用-o jsonpath
,所以在这个版本中我只使用Unix管道。
我正在使用OpenShift v3.9。我也将这个问题标记为Kubernetes,因为它大概以类似的方式(没有kubectl
)适用于oc
(而不是-l app=my_app
)。
答案 0 :(得分:2)
在Kubernetes前端,{8} 1.7应该有效,{8} 1.7:it was fixed for 1.8除外。
“ Kubernetes sort pods by age”也提到
kubectl get po --sort-by=.status.startTime
由于Openshift 3.9(2018年3月)是最近的版本,因此即使kubectl get pods --sort-by=.metadata.creationTimestamp
并不完全兼容,那些kubectl
命令也应该起作用。
答案 1 :(得分:0)
尝试一下:
kubectl get pods --sort-by=.metadata.creationTimestamp -o jsonpath="{.items[0].metadata.name}"