[转帖]Kubectl之JSONPath
kubectl,jsonpath
·
浏览次数 : 0
小编点评
## Kubectl JSONPath 示例
使用 JSONPath 可以从 Kubernetes 集群中获取特定字段并格式化输出。以下是一些示例:
**1. 只显示 pod 名和 IP:**
```jsonpath='{.items[0].metadata.name}{"\t"}.status.hostIP}'
```
**2. 显示所有 pod 的名称和 IP:**
```jsonpath='{.items | map({metadata: .metadata, status: .status})}'
```
**3. 显示指定 namespace 的所有 pod 的名称和 IP:**
```jsonpath='{.items | filter({metadata: {namespace: "test"}}) | map({metadata: .metadata, status: .status})}'
```
**4. 显示所有 pod 的名称、 IP 和状态:**
```jsonpath='{.items | map({metadata: .metadata, status: .status})}'
```
**5. 显示所有 pod 中 name 和 status 的值:**
```jsonpath='{.items | map({metadata: .metadata, status: .status}) | {name: .metadata.name, status: .status}'
```
**6. 显示所有 pod 的 name、 IP 和 last modified time:**
```jsonpath='{.items | map({metadata: .metadata, status: .status, metadata: .metadata.lastModifiedTime})}'
```
**7. 显示所有 namespace 的 pod 的 name 和 status:**
```jsonpath='{.items | filter({metadata: {namespace: "test"}} | map({metadata: .metadata, status: .status})}'
```
**8. 显示所有 pod 的 name 和状态,并使用颜色区分正常和错误的 pod:**
```jsonpath='{.items | map({metadata: .metadata, status: .status}) | if{.metadata.status == "running"} {"\u0331"} else {"\u0332"}}'
```
**注意:**
* 以上示例仅供参考,您可以根据需要修改这些表达式。
* 您可以使用不同的输出格式,例如使用 `name`, `status`, `metadata` 等关键字。
* 使用 `range` 关键字可以循环遍历所有 pod,并从 `metadata` 和 `status` 中获取其他字段。
正文
背景
最近接到一个需求,需要通过kubectl命令展示出一些特定的字段,比如只显示pod name和host ip,接到这个需求之后开始查找kubectl命令帮助,找到了一个"-o=jsonpath="的命令可以基本满足需求。
执行参数
kubectl get pods -o json
kubectl get pods -o=jsonpath='{@}'
kubectl get pods -o=jsonpath='{.items[0]}'
kubectl get pods -o=jsonpath='{.items[0].metadata.name}'
kubectl get pods -o=jsonpath="{.items[*]['metadata.name', 'status.capacity']}"
kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.startTime}{"\n"}{end}'
示例参考
测试结果
[root@master-1 ~]# kubectl get pods -n test -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.hostIP}{"\n"}'
nginx-test-77f7fc6bd7-jfw8j 172.17.108.170
nginx-test-77f7fc6bd7-mzwc2 172.17.108.255
与[转帖]Kubectl之JSONPath相似的内容: