你的
ConfigMap
资源
data
-字段包含一个字符串,当您运行
jsonpath
通过
'{.data.cluster-config\.json}'
.我的意思是,您使用的shell将在
stdout
尽管它在库伯内特斯的储存方式不同。如果你跑
kubectl get cm cluster-info -n kube-system -o json
看看
数据
-它可能看起来像这样:
"data": {
"cluster-config.json": "{\n \"cluster_id\": \"xxx\",\n \"cluster_name\": \"prod-yyy-mmm\",\n \"cluster_type\": \"rrr\",\n \"cluster_pay_tier\": \"vvv\",\n \"datacenter\": \"cse\",\n \"account_id\": \"456777\",\n \"created\": \"2018-06-32323dffdf:35:48+0000\"\n}\n"
}
您将无法使用
JsonPath公司
因为它实际上不是
ConfigMap
API resource
领域。
你可以尝试使用第二个工具来获取它,使用
jq
,一个命令行json处理器。此工具将解释
JsonPath公司
作为动态的json并相应地解析它。
例子:
kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}' | jq '.cluster_id'
"xxx"
如果安装,例如
JQ公司
如果没有任何目的,我建议您使用现有工具的组合(假设您在Linux上),比如
grep
,请
awk
和
sed
以下内容:
kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}' | grep cluster_id | awk '{ print $2 }' | sed -e 's/"//' -e 's/",//'
xxx