[英]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
实现什么的好信息,而无需调用其他重炮,如awk
、 sed
等。
以 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.