Grep命令提取一个kubernetes pod名称



我目前正在编写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提供了很多很好的信息,说明在不调用其他重型火炮(如awksed等(的情况下,只使用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

最新更新