Membuat Daftar Semua Image Container yang Berjalan dalam Klaster
Laman ini menunjukkan cara menggunakan kubectl untuk membuat daftar semua image Container untuk Pod yang berjalan dalam sebuah klaster.
Sebelum kamu memulai
Kamu harus memiliki klaster Kubernetes, dan perangkat baris perintah kubectl juga harus dikonfigurasikan untuk berkomunikasi dengan klastermu. Jika kamu belum memiliki klaster, kamu dapat membuatnya dengan menggunakan minikube, atau kamu juga dapat menggunakan salah satu dari tempat mencoba Kubernetes berikut ini:
Untuk melihat versi, tekankubectl version
.Dalam latihan ini kamu akan menggunakan kubectl untuk mengambil semua Pod yang berjalan dalam sebuah klaster, dan mengubah format keluarannya untuk melihat daftar Container untuk masing-masing Pod.
Membuat daftar semua image Container pada semua Namespace
- Silakan ambil semua Pod dalam Namespace dengan menggunakan perintah
kubectl get pods --all-namespaces
- Silakan format keluarannya agar hanya menyertakan daftar nama image dari Container
dengan menggunakan perintah
-o jsonpath={.items[*].spec.containers[*].image}
. Perintah ini akan mem-parsing fieldimage
dari keluaran json yang dihasilkan.- Silakan lihat referensi jsonpath
untuk informasi lebih lanjut tentang cara menggunakan
jsonpath
.
- Silakan lihat referensi jsonpath
untuk informasi lebih lanjut tentang cara menggunakan
- Silakan format keluaran dengan menggunakan peralatan standar:
tr
,sort
,uniq
- Gunakan
tr
untuk mengganti spasi dengan garis baru - Gunakan
sort
untuk menyortir hasil - Gunakan
uniq
untuk mengumpulkan jumlah image
- Gunakan
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c
Perintah di atas secara berulang akan mengembalikan semua field bernama image
dari semua poin yang dikembalikan.
Sebagai pilihan, dimungkinkan juga untuk menggunakan jalur (path) absolut ke field image
di dalam Pod. Hal ini memastikan field yang diambil benar
bahkan ketika nama field tersebut diulangi,
misalnya banyak field disebut dengan name
dalam sebuah poin yang diberikan:
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}"
Jsonpath
dapat diartikan sebagai berikut:
.items[*]
: untuk setiap nilai yang dihasilkan.spec
: untuk mendapatkan spesifikasi.containers[*]
: untuk setiap Container.image
: untuk mendapatkan image
Catatan:
Pada saat mengambil sebuah Pod berdasarkan namanya, misalnyakubectl get pod nginx
,
bagian .items[*]
dari jalur harus dihilangkan karena hanya akan menghasilkan sebuah Pod
sebagai keluarannya, bukan daftar dari semua Pod.Membuat daftar image Container berdasarkan Pod
Format dapat dikontrol lebih lanjut dengan menggunakan operasi range
untuk
melakukan iterasi untuk setiap elemen secara individual.
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
sort
Membuat daftar image yang difilter berdasarkan label dari Pod
Untuk menargetkan hanya Pod yang cocok dengan label tertentu saja, gunakan tanda -l. Filter
dibawah ini akan menghasilkan Pod dengan label yang cocok dengan app=nginx
.
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" -l app=nginx
Membuat daftar image Container yang difilter berdasarkan Namespace Pod
Untuk hanya menargetkan Pod pada Namespace tertentu, gunakankan tanda Namespace. Filter
dibawah ini hanya menyaring Pod pada Namespace kube-system
.
kubectl get pods --namespace kube-system -o jsonpath="{.items[*].spec.containers[*].image}"
Membuat daftar image Container dengan menggunakan go-template sebagai alternatif dari jsonpath
Sebagai alternatif untuk jsonpath
, kubectl mendukung penggunaan go-template
untuk memformat keluaran seperti berikut:
kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"
Selanjutnya
Referensi
- Referensi panduan Jsonpath.
- Referensi panduan Go template.