使用kubectl列出pod标签时,将字符串附加到jsonpath表达式的输出



我有一个json-path命令来获取我的pod的所有标签。

kubectl get pods -o jsonpath="{.items[*].metadata.labels}"

这将输出:

{
"app": "api-dogs-v1",
"release": "0.0.119"
} {
"app": "api-cats-v1",
"release": "0.0.16"
} 

我想对该命令进行一些简单的操作,以便它输出有效的json并包围在json对象中。

我正在尝试以下操作:

kubectl get pods -o jsonpath='{"{"}{{range .items[*]}{.metadata.labels}{"}"}{end}'

但这让我回来了:

unrecognized character in action: U+007B ''

有人能帮我吗?以下所需输出:

{
{
"app": "api-dogs-v1",
"release": "0.0.119"
} {
"app": "api-cats-v1",
"release": "0.0.16"
} 
}

谢谢!

更新

kubectl get pods -o jsonpath='"richard"{range .items[*]}{.metadata.labels}{end}"}"'

我几乎做到了,但当我更改为在json路径表达式(而不是我的名字(的开头添加大括号时,我遇到了一个错误,我相信它认为我正在启动函数。。。

kubectl get pods -o jsonpath='"{"{range .items[*]}{.metadata.labels}{end}"}"'

错误:解析jsonpath{{range.items[*]}{.metadata.labels}{端}}时出错,无法识别的操作字符:U+007B"{">

我已经在{range .items[*]}之前删除了额外的{,并在{end}之后移动了{"}"},如下所示:

kubectl get pods -o jsonpath='{"{"}{range .items[*]}{.metadata.labels}{end}{"}"}'
Output(your desired output format): 
{{"app":"test-multi-pv","pod-template-hash":"55665bc94c"}{"app":"nginx","controller-revision-hash":"web1-774fbdcb49","statefulset.kubernetes.io/pod-name":"web1-0"}{"app":"nginx","controller-revision-hash":"web2-6b59d76fc6","statefulset.kubernetes.io/pod-name":"web2-0"}{"app":"nginx","controller-revision-hash":"web3-7c65fbbcdc","statefulset.kubernetes.io/pod-name":"web3-0"}}

我发现您在命令中多打开了一个大括号。请重新检查命令并重试一次。

我已经复制了这个用例,并成功地获得了预期的输出。在运行下面的jsonpath命令时,我已经获得了我的pod的所有标签。

kubectl获取pods-o jsonpath=";{.items[*].metadata.labels}";

输出:

"app":"你好服务器";,"Pod模板散列":"5bd6b6875f";

}

我删除了{range.items[*]}之前的jsonpath表达式"{"的大括号,并在{end}之前添加了一个换行表达式

因此,围绕在内部json对象周围的json对象的最后一个范围函数是

kubectl getpods-o jsonpath="{"{quot;}{range.items[*]}{.metadata.labels}}"{quot;\n quot;}{end}'

预期输出:

"app":"hello-server",
"Pod-template-hash":"5bd6b6875f"

}

}

相关内容

  • 没有找到相关文章

最新更新