kubectl get
(并且通过扩展oc get
) is a very多功能工具。不幸的是,在网上浏览了一段时间后,你会发现确实如果不依赖像这样的外部工具就无法执行正则表达式awk
or grep
。 (我知道这不是exactly你在问什么,但我想我至少会尝试看看是否可能。
话虽如此,您可以依靠一些技巧来过滤您的信息oc get
在您甚至必须引入外部工具之前就可以输出(奖励点,因为这种过滤甚至在到达本地工具之前就发生在服务器上)。
I first建议跑步oc get pods --show-labels
,因为如果您需要的 pod 已被适当标记,您可以使用标签选择器来获取您想要的 pod,例如:
oc get pods --selector name=jenkins
oc get pods --selector <label_key>=<label_value>
Second,如果你只关心Running
豆荚(自disk-check
豆荚看起来已经Completed
),您可以使用字段选择器,例如:
oc get pods --field-selector status.phase=Running
oc get pods --field-selector <json_path>=<json_value>
Finally,如果有一个specific您想要的值,您可以通过指定自定义列将该值拉入 CLI,然后grep
关注您关心的价值,例如:
oc get pods -o custom-columns=NAME:.metadata.name,TYPES:.status.conditions[*].type | grep "Ready"
最好的事情是,如果您依赖标签选择器和/或字段选择器,过滤会发生在服务器端,以减少最终进入最终自定义列的数据,从而使一切变得更加高效。
为您specific用例,看来只需使用--field-selector
就足够了,因为disk-check
豆荚已经Completed
。因此,在没有进一步信息的情况下exactlyJenkins pod 的 JSON 是如何构建的,这对您来说应该足够了:
oc get pods --field-selector status.phase=Running