클러스터에서 실행 중인 모든 컨테이너 이미지 나열하기
클러스터에서 실행 중인 모든 컨테이너 이미지 나열하기 (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)
- Jsonpath 참고 가이드
- Go template 참고 가이드