我想从kubernetes上可用的pod列表中提取一个pod名称。例如,对于以下命令
kubectl get pods-n命名空间
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 2 46d
pod2 1/1 Running 0 46d
test-pod3-yy 0/1 ImagePullBackOff 0 338d
test-pod3-xx 1/1 Running 0 255d
我想使用shell脚本提取podtest-pod3-xx
。目前这是我正在使用的命令
POD_NAME=$(kubectl get pods -n namespace | grep testpod-3 | cut -d' ' -f1)
有了这个,我得到了两个podtest-pod3-yy
和test-pod3-xx
,但我想提取处于运行状态的pod。我该怎么做?
您可以使用field-selector
并检查是否仅运行:
--field-selector=status.phase=Running
您也可以使用-o name
标志,只获取名称。有了它,你就会得到:
$ kubectl get pods -n namespace -o name --field-selector=status.phase=Running
pod/pod1
pod/pod2
pod/test-pod3-xx
#!/bin/sh -x
kubectl get pods -n namespace > stack
while read line
do
[[ -n $(sed -n '/Running/p' "${line}" ]] && echo "${line}"
done < stack