首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义列或jsonpath在kubectl中组合多个列输出

使用自定义列或jsonpath在kubectl中组合多个列输出
EN

Stack Overflow用户
提问于 2021-08-05 06:33:27
回答 1查看 397关注 0票数 1

这是custom-columns的输出

代码语言:javascript
运行
复制
$ kubectl -n web get pod -ocustom-columns="Name:.metadata.name,Image:.spec.containers[0].image"
Name      Image
mysql-0   myrepo.mydomain.com/mysql:5.7
mysql-1   myrepo.mydomain.com/mysql:5.7
mysql-2   myrepo.mydomain.com/mysql:5.7

这是对单个pod使用jsonpath的输出

代码语言:javascript
运行
复制
$ kubectl -n web get pod -o jsonpath="{..metadata.name}:{..spec.containers[0].image}" mysql-0
mysql-0:myrepo.mydomain.com/mysql:5.7

这是多个pod的jsonpath输出

代码语言:javascript
运行
复制
$ kubectl -n web get pod -o jsonpath="{..metadata.name}:{..spec.containers[0].image}"
mysql-0 mysql-1 mysql-2:myrepo.mydomain.com/mysql:5.7 myrepo.mydomain.com/mysql:5.7 myrepo.mydomain.com/mysql:5.7

现在,如何使用-ocustom-columns-ojsonpath将其组合到单个列或单词中,如下所示

代码语言:javascript
运行
复制
mysql-0=myrepo.mydomain.com/mysql:5.7
mysql-1=myrepo.mydomain.com/mysql:5.7
mysql-2=myrepo.mydomain.com/mysql:5.7
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-06 20:04:25

使用kubectl使用普通jsonpath

代码语言:javascript
运行
复制
kubectl get pod -n <namespace> -o jsonpath='{range .items[*]}{.metadata.name}={.spec.containers[*].image}{"\n"}{end}'

示例:

代码语言:javascript
运行
复制
kubectl get pod -n default -o jsonpath='{range .items[*]}{.metadata.name}={.spec.containers[*].image}{"\n"}{end}'
nginx-0=nginx
nginx-1=nginx
nginx-2=nginx

这里使用range功能来循环遍历所有pods:

代码语言:javascript
运行
复制
{range items[*]} ...<LOGIC HERE>... {end}

在范围块之间(如上所述),使用jsonpath,注意=符号是根据我们的要求使用的。

代码语言:javascript
运行
复制
{.metadata.name}={.spec.containers[*].image}{"\n"}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68661694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档