我目前正在编写bash
脚本,以减少为项目构建db
所需的时间。目前,我有几个数据库在同一个命名空间中运行,我只想提取特定的pod名称。
我运行kubectl get pods
NAME READY STATUS RESTARTS AGE
elastic 1/1 Running 0 37h
mysql 1/1 Running 0 37h
现在我想保存其中一个pod名称。
我当前正在运行此foo=$(kubectl get pods | grep -e "mysql")
并且它返回作为命令的预期结果的CCD_ 5。现在我只想能够提取pod名称作为变量,这样我就可以在以后传递它。
这应该适用于
foo=$(kubectl get pods | awk '{print $1}' | grep -e "mysql")
kubectl
已经允许您仅提取名称:
kubectl get pods -o=jsonpath='{range .items..metadata}{.name}{"n"}{end}' | fgrep mysql
如果我没有记错的话,您只需要获得pod名称即可在以后重用这些名称。
kubectl get --help
提供了很多很好的信息,说明在不调用其他重型火炮(如awk
、sed
等(的情况下,只使用kubectl
可以实现什么。
以JSON输出格式列出单个pod。
kubectl get -o json pod web-pod-13je7
在自定义列中列出资源信息。
kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
仅返回指定吊舱的相位值。
kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
在这种特殊情况下,我至少看到了两种解决方案:
1( 自定义列。您几乎可以获得任何输出(如果需要,还可以获得grep
/tr
/awk
(:
$ kubectl get pods --no-headers=true -o custom-columns=NAME_OF_MY_POD:.metadata.name
mmmysql-6fff9ffdbb-58x4b
mmmysql-6fff9ffdbb-72fj8
mmmysql-6fff9ffdbb-p76hx
mysql-tier2-86dbb787d9-r98qw
nginx-65f88748fd-s8mgc
2( jsonpath(提供了一个@vault(:
kubectl get pods -o=jsonpath='{.items..metadata.name}'
希望这能让你从中做出选择。如果有帮助,请告诉我们。
kubectl get pods | grep YOUR_POD_STARTING_NAME
例如
kubectl get pods | grep mysql