클러스터에서 실행 중인 모든 컨테이너 이미지 나열하기

클러스터에서 실행 중인 모든 컨테이너 이미지 나열하기 (List All Container Images Running in a Cluster)

이 페이지는 kubectl을 사용해 클러스터에서 실행되는 파드의 모든 컨테이너 이미지를 나열하는 방법을 보여줘요.

출처: 문서

본문

시작하기 전에 (Before you begin)

이 실습에서 kubectl을 사용해 클러스터에서 실행 중인 모든 파드를 가져오고, 각 컨테이너 목록을 뽑아내도록 출력 형식을 지정해요.

모든 네임스페이스의 모든 컨테이너 이미지 나열하기

  • kubectl get pods --all-namespaces 로 모든 네임스페이스의 모든 파드를 가져와요.
  • -o jsonpath={.items[*].spec['initContainers', 'containers'][*].image} 을 사용해 컨테이너 이미지 이름 목록만 포함하도록 출력 형식을 지정해요. 이 방법은 반환된 JSON에서 image 필드를 재귀적으로 파싱해요.
  • tr, sort, uniq 같은 표준 도구로 출력 형식을 지정해요.
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

jsonpath는 다음과 같이 해석돼요:

  • .items[*]: 반환된 각 값에 대해
  • .spec: 스펙을 가져와요
  • ['initContainers', 'containers'][*]: 각 컨테이너에 대해
  • .image: 이미지를 가져와요

참고:

파드별로 컨테이너 이미지 나열하기

range 연산을 사용해 각 요소를 개별적으로 반복하면 형식을 더 제어할 수 있어요.

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
sort

파드 라벨로 필터링해 컨테이너 이미지 나열하기

특정 라벨과 일치하는 파드만 대상으로 하려면 -l 플래그를 사용해요. 다음은 app=nginx 와 일치하는 라벨을 가진 파드만 매칭해요.

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" -l app=nginx

파드 네임스페이스로 필터링해 컨테이너 이미지 나열하기

특정 네임스페이스의 파드만 대상으로 하려면 namespace 플래그를 사용해요. 다음은 kube-system 네임스페이스의 파드만 매칭해요.

kubectl get pods --namespace kube-system -o jsonpath="{.items[*].spec.containers[*].image}"

jsonpath 대신 go-template으로 컨테이너 이미지 나열하기

jsonpath의 대안으로 Kubectl은 출력 형식 지정에 go-templates 사용을 지원해요:

kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"

더 알아보기 (Learn more)

참고 (Reference)