Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: List All Container Images Running in a Cluster

ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ชฉ๋ก ๋ณด๊ธฐ

์ด ๋ฌธ์„œ๋Š” kubectl์„ ์ด์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๊ณ , kubectl ์ปค๋งจ๋“œ-๋ผ์ธ ํˆด์ด ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์€ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ํ˜ธ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ๊ฐ€ ์ ์–ด๋„ 2๊ฐœ ํฌํ•จ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๋งŒ์•ฝ, ์•„์ง ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด, minikube๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฒ„์ „ ํ™•์ธ์„ ์œ„ํ•ด์„œ, ๋‹ค์Œ ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ kubectl version.

์ด ์ž‘์—…์—์„œ๋Š” kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ํŒŒ๋“œ์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ณ , ๊ฒฐ๊ณผ๊ฐ’์˜ ์„œ์‹์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฐ ํŒŒ๋“œ์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•  ๊ฒƒ์ด๋‹ค.

๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ

  • kubectl get pods --all-namespaces ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ชจ๋“  ํŒŒ๋“œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ด๋ฆ„๋งŒ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด -o jsonpath={.items[*].spec.containers[*].image} ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฐ›์€ json์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํŒŒ์‹ฑํ•˜์—ฌ, image ํ•„๋“œ๋งŒ์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • jsonpath๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป๊ณ  ์‹ถ๋‹ค๋ฉด Jsonpath ์ง€์›์„ ํ™•์ธํ•œ๋‹ค.
  • ๋‹ค์Œ์˜ ํ‘œ์ค€ ํˆด์„ ์ด์šฉํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ’์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. tr, sort, uniq
    • tr ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๋ฐฑ์„ ์ค„ ๋ฐ”๊พธ๊ธฐ๋กœ ๋Œ€์ฒดํ•œ๋‹ค.
    • sort ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๊ฐ’์„ ์ •๋ ฌํ•œ๋‹ค.
    • uniq ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๊ฐœ์ˆ˜๋ฅผ ํ•ฉ์‚ฐํ•œ๋‹ค.
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

์ด jsonpath๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • .items[*]: ๊ฐ ๊ฒฐ๊ณผ๊ฐ’์— ๋Œ€ํ•˜์—ฌ
  • .spec: spec ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.
  • .containers[*]: ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•˜์—ฌ
  • .image: 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

ํŒŒ๋“œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ํ•„ํ„ฐ๋ง๋œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ชฉ๋ก ๋ณด๊ธฐ

ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํŒŒ๋“œ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์•„๋ž˜์˜ ๋ช…๋ น์–ด ๊ฒฐ๊ณผ๊ฐ’์€ kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ํŒŒ๋“œ๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.

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

jsonpath ๋Œ€์‹  Go ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ชฉ๋ก ๋ณด๊ธฐ

jsonpath์˜ ๋Œ€์•ˆ์œผ๋กœ Kubectl์€ Go ํ…œํ”Œ๋ฆฟ์„ ์ง€์›ํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฐ๊ณผ๊ฐ’์˜ ์„œ์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

๋‹ค์Œ ๋‚ด์šฉ

์ฐธ์กฐ

์ตœ์ข… ์ˆ˜์ • March 26, 2023 at 1:12 AM PST: [ko] Update outdated files dev-1.26-ko.1 (M143 - M148) (eda4f1d533)