|
| 1 | +--- |
| 2 | +title: Membuat Daftar Semua Image Container yang Berjalan dalam Klaster |
| 3 | +content_type: task |
| 4 | +weight: 100 |
| 5 | +--- |
| 6 | + |
| 7 | +<!-- overview --> |
| 8 | + |
| 9 | +Laman ini menunjukkan cara menggunakan kubectl untuk membuat daftar semua _image_ Container |
| 10 | +untuk Pod yang berjalan dalam sebuah klaster. |
| 11 | + |
| 12 | + |
| 13 | + |
| 14 | +## {{% heading "prerequisites" %}} |
| 15 | + |
| 16 | + |
| 17 | +{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | +<!-- steps --> |
| 22 | + |
| 23 | +Dalam latihan ini kamu akan menggunakan kubectl untuk mengambil semua Pod yang |
| 24 | +berjalan dalam sebuah klaster, dan mengubah format keluarannya untuk melihat daftar |
| 25 | +Container untuk masing-masing Pod. |
| 26 | + |
| 27 | +## Membuat daftar semua _image_ Container pada semua Namespace |
| 28 | + |
| 29 | +- Silakan ambil semua Pod dalam Namespace dengan menggunakan perintah `kubectl get pods --all-namespaces` |
| 30 | +- Silakan format keluarannya agar hanya menyertakan daftar nama _image_ dari Container |
| 31 | + dengan menggunakan perintah `-o jsonpath={..image}`. Perintah ini akan mem-_parsing field_ |
| 32 | + `image` dari keluaran json yang dihasilkan. |
| 33 | + - Silakan lihat [referensi jsonpath](/docs/user-guide/jsonpath/) |
| 34 | + untuk informasi lebih lanjut tentang cara menggunakan `jsonpath`. |
| 35 | +- Silakan format keluaran dengan menggunakan peralatan standar: `tr`, `sort`, `uniq` |
| 36 | + - Gunakan `tr` untuk mengganti spasi dengan garis baru |
| 37 | + - Gunakan `sort` untuk menyortir hasil |
| 38 | + - Gunakan `uniq` untuk mengumpulkan jumlah _image_ |
| 39 | + |
| 40 | +```sh |
| 41 | +kubectl get pods --all-namespaces -o jsonpath="{..image}" |\ |
| 42 | +tr -s '[[:space:]]' '\n' |\ |
| 43 | +sort |\ |
| 44 | +uniq -c |
| 45 | +``` |
| 46 | + |
| 47 | +Perintah di atas secara berulang akan mengembalikan semua _field_ bernama `image` |
| 48 | +dari semua poin yang dikembalikan. |
| 49 | + |
| 50 | +Sebagai pilihan, dimungkinkan juga untuk menggunakan jalur (_path_) absolut ke _field image_ |
| 51 | +di dalam Pod. Hal ini memastikan _field_ yang diambil benar |
| 52 | +bahkan ketika nama _field_ tersebut diulangi, |
| 53 | +misalnya banyak _field_ disebut dengan `name` dalam sebuah poin yang diberikan: |
| 54 | + |
| 55 | +```sh |
| 56 | +kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |
| 57 | +``` |
| 58 | + |
| 59 | +`Jsonpath` dapat diartikan sebagai berikut: |
| 60 | + |
| 61 | +- `.items[*]`: untuk setiap nilai yang dihasilkan |
| 62 | +- `.spec`: untuk mendapatkan spesifikasi |
| 63 | +- `.containers[*]`: untuk setiap Container |
| 64 | +- `.image`: untuk mendapatkan _image_ |
| 65 | + |
| 66 | +{{< note >}} |
| 67 | +Pada saat mengambil sebuah Pod berdasarkan namanya, misalnya `kubectl get pod nginx`, |
| 68 | +bagian `.items[*]` dari jalur harus dihilangkan karena hanya akan menghasilkan sebuah Pod |
| 69 | +sebagai keluarannya, bukan daftar dari semua Pod. |
| 70 | + |
| 71 | +{{< /note >}} |
| 72 | + |
| 73 | +## Membuat daftar _image_ Container berdasarkan Pod |
| 74 | + |
| 75 | +Format dapat dikontrol lebih lanjut dengan menggunakan operasi `range` untuk |
| 76 | +melakukan iterasi untuk setiap elemen secara individual. |
| 77 | + |
| 78 | +```sh |
| 79 | +kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\ |
| 80 | +sort |
| 81 | +``` |
| 82 | + |
| 83 | +## Membuat daftar _image_ yang difilter berdasarkan label dari Pod |
| 84 | + |
| 85 | +Untuk menargetkan hanya Pod yang cocok dengan label tertentu saja, gunakan tanda -l. Filter |
| 86 | +dibawah ini akan menghasilkan Pod dengan label yang cocok dengan `app=nginx`. |
| 87 | + |
| 88 | +```sh |
| 89 | +kubectl get pods --all-namespaces -o=jsonpath="{..image}" -l app=nginx |
| 90 | +``` |
| 91 | + |
| 92 | +## Membuat daftar _image_ Container yang difilter berdasarkan Namespace Pod |
| 93 | + |
| 94 | +Untuk hanya menargetkan Pod pada Namespace tertentu, gunakankan tanda Namespace. Filter |
| 95 | +dibawah ini hanya menyaring Pod pada Namespace `kube-system`. |
| 96 | + |
| 97 | +```sh |
| 98 | +kubectl get pods --namespace kube-system -o jsonpath="{..image}" |
| 99 | +``` |
| 100 | + |
| 101 | +## Membuat daftar _image_ Container dengan menggunakan go-template sebagai alternatif dari jsonpath |
| 102 | + |
| 103 | +Sebagai alternatif untuk `jsonpath`, kubectl mendukung penggunaan [go-template](https://golang.org/pkg/text/template/) |
| 104 | +untuk memformat keluaran seperti berikut: |
| 105 | + |
| 106 | + |
| 107 | +```sh |
| 108 | +kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}" |
| 109 | +``` |
| 110 | + |
| 111 | + |
| 112 | + |
| 113 | + |
| 114 | + |
| 115 | +<!-- discussion --> |
| 116 | + |
| 117 | + |
| 118 | + |
| 119 | +## {{% heading "whatsnext" %}} |
| 120 | + |
| 121 | + |
| 122 | +### Referensi |
| 123 | + |
| 124 | +* Referensi panduan [Jsonpath](/docs/user-guide/jsonpath/). |
| 125 | +* Referensi panduan [Go template](https://golang.org/pkg/text/template/). |
| 126 | + |
| 127 | + |
| 128 | + |
| 129 | + |
0 commit comments