需求

查询 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 配置正确并能访问集群