Kubernetes上で利用されているコンテナイメージの一覧を取りたい。
公式にやり方が紹介されているが、こちらはPodのみ対象となっているので、Jobなどが含まれない。 https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/
そこで次のようにした。
function list_images() {
kubectl get all -A -o jsonpath='{range .items[*]}{..image}{"\n"}{end}' | tr -s '[[:space:]]' '\n'
kubectl get crds -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -i kubectl get {} -A -o jsonpath='{range .items[*]}{..image}{"\n"}{end}' | tr -s '[[:space:]]' '\n'
}
list_images | sort -u
ポイント
get all
でPod以外のリソースも対象にするget all
ではCustom Resourceが含まれていないため、それら一つ一つに対しても実行する
リソースの数が多いと時間はかかってしまうが、多分これが確実だと思います