我需要使用kubectl命令的cluster-id
root@vagrant-xenial64:~# kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}'
{
"cluster_id": "xxx",
"cluster_name": "prod-yyy-mmm",
"cluster_type": "rrr",
"cluster_pay_tier": "vvv",
"datacenter": "cse",
"account_id": "456777",
"created": "2018-06-32323dffdf:35:48+0000"
}
字符串
我需要cluster-id
这个特定的json
root@vagrant-xenial64:~# kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json.cluster_id}'
root@vagrant-xenial64:~#
型
上面的命令返回空字符串。我也尝试了许多其他的组合
2条答案
按热度按时间soat7uwm1#
您的
ConfigMap
资源data
-field包含一个字符串,当您运行jsonpath
通过'{.data.cluster-config\.json}'
选择它时,它会被解释为原样。我的意思是,您使用的shell将在stdout
处将其打印为JSON,尽管它在Kubernetes中的存储方式不同。如果您运行kubectl get cm cluster-info -n kube-system -o json
并查看data
-field,它可能看起来像这样:字符串
您将无法使用
jsonpath
访问该字符串中的“字段”,因为它实际上不是ConfigMap
API资源字段的一部分。您可以尝试使用第二个工具来获取它,使用
jq
,一个命令行JSON处理器。该工具将jsonpath
的输出解释为JSON并相应地解析它。示例如下:
型
如果安装例如
jq
失败任何目的,我建议使用已经可用的工具的组合(假设你在Linux上),如grep
,awk
和sed
:型
dvtswwa32#
在任何pod中,您都可以运行以下命令来获取该集群的唯一id:
第一个月