需求
查询 Kubernetes 集群上所有以 docker.foobar.com 开头的 Pod 镜像,并去重排序。
一行命令实现
1
| kubectl get pods --all-namespaces -o jsonpath="{..image}" | tr -s '[[:space:]]' '\n' | grep '^docker\.foobar\.com' | sort -u
|
命令说明
| 命令部分 |
作用 |
kubectl get pods --all-namespaces -o jsonpath="{..image}" |
获取所有命名空间中 Pod 的镜像信息 |
tr -s '[[:space:]]' '\n' |
将空格转换为换行符,每个镜像占一行 |
grep '^docker\.foobar\.com' |
过滤以 docker.foobar.com 开头的镜像 |
sort -u |
排序并去重(-u 参数表示唯一) |
脚本方式
如果需要保存为脚本:
1 2 3 4 5 6 7
| #!/bin/bash
kubectl get pods --all-namespaces -o jsonpath="{..image}" | \ tr -s '[[:space:]]' '\n' | \ grep '^docker\.foobar\.com' | \ sort -u
|
保存为 get-images.sh 后执行:
1 2
| chmod +x get-images.sh ./get-images.sh
|
注意
- 需要有查询所有命名空间 Pod 的权限
- 确保 kubectl 配置正确并能访问集群