繁体   English   中英

用于提取 kubernetes pod 名称的 Grep 命令

[英]Grep command to extract a kubernetes pod name

我目前正在编写一个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")并且它返回mysql 1/1 Running 0 37h这是命令的预期结果。 现在我只想能够提取 pod 名称作为该变量,以便我可以在以后传递它。

kubectl已经允许您只提取名称:

kubectl get pods -o=jsonpath='{range .items..metadata}{.name}{"\n"}{end}' | fgrep mysql

这应该适合你

foo=$(kubectl get pods | awk '{print $1}' | grep -e "mysql")

如果我没记错的话,您只需要获取 pod 名称即可在以后重用这些名称。

kubectl get --help提供了很多关于您可以使用kubectl实现什么的好信息,而无需调用其他重炮,如awksed等。

以 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

仅返回指定 pod 的相位值。 kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}

在这种特殊情况下,我看到至少 2 个解决方法:

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}'

希望能阐明您必须选择的选项。 如果这有帮助,请告诉我们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM