我在脚本中使用 kubectl 来获取当前的 GKE 集群名称,如下所示:
CURRENT_CLUSTER=$(kubectl run curl --rm --restart=Never -it --image=appropriate/curl -- -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name)
不幸的是,kubect 将
pod "curl" deleted
打印到标准输出,所以结果是这样的:
my-cluster-us-west1pod "curl" deleted
如何阻止 kubectl 打印此字符串?
如果集群名称和不需要的文本之间有空格,那么您可以 使用 awk 获取输出的第一个单词:
CURRENT_CLUSTER=$(kubectl run curl --rm --restart=Never -it --image=appropriate/curl -- -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name | awk '{print $1;}')
但是没有空格,所以必须以不同的方式删除它,例如使用 sed 删除 'pod ' 及其后面的任何内容:
CURRENT_CLUSTER=$(kubectl run curl --rm --restart=Never -it --image=appropriate/curl -- -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name | sed "s/pod .*//g")
在现代你可以使用
kubectl run --quiet
。