KuView: Dasbor Kubernetes real-time berbasis web
(github.com/iwanhae)Secara pribadi saya cukup menyukai Kubernetes, tetapi tetap ada beberapa hal yang terasa kurang: karena abstraksinya terlalu baik, elemen fisik yang sebenarnya jadi tersembunyi sehingga sulit untuk diperiksa.
Contohnya
- Saat sebuah Pod mengalami gangguan, bagaimana kondisi Pod lain yang dideploy di node yang sama?
- Apakah semua Pod yang saat ini terhubung ke Service berjalan dengan normal?
- Bagaimana penggunaan CPU dan Memory pada node saat ini? Dari situ, seberapa besar porsi masing-masing Pod?
- Apa daftar PV yang saat ini terhubung ke node?
Tentu bukan berarti informasinya sama sekali tidak ada; ada cara untuk memvisualisasikannya satu per satu melalui kombinasi kubectl dan alat pemantauan seperti Prometheus, tetapi kenyataannya itu cukup merepotkan.
Untuk membantu dalam situasi seperti itu, saya membuat sebuah dasbor Kubernetes real-time berbasis web. Tanpa perlu memasang apa pun secara terpisah, selama perintah kubectl proxy bisa digunakan, ini bekerja dalam bentuk WASM di dalam browser web dengan cara me-WATCH semua resource Kubernetes.
7 komentar
Sepertinya angka Running / Terminating berubah bukan per 1 detik, melainkan dalam satuan 0,00x detik. Sebenarnya dengan mekanisme seperti apa angka itu terus berubah? Apakah terus-menerus memanggil API k8s?
Saya ingin menggunakannya, tetapi agak khawatir jangan-jangan ini memberi beban yang sangat besar pada read request API k8s, jadi saya bertanya!
Menggunakan WATCH API dari K8s.
https://kubernetes.io/docs/reference/…
Karena hanya menerima perubahan melalui protobuf dan SSE, ini cukup efisien dan bebannya sangat kecil. (tingkat bebannya kira-kira setara dengan beban yang diberikan kubelet ke kube apiserver)
Namun, jika digunakan oleh banyak orang secara bersamaan, saya merekomendasikan mode server daripada wasm. Karena server yang akan mengambil permintaan dan menyimpan datanya di memori lalu memberikannya, beban pada kube apiserver menjadi lebih kecil.
File WASM-nya sekitar 90 MB, jadi memang lumayan besar.
Ukurannya memang besar, tetapi sepertinya entropinya tidak terlalu tinggi. Saat ini ketika diunduh dengan
curl, ukuran file yang sudah di-gziphanya sekitar 14MB. Bahkan saat benar-benar menyajikan WASM, belakangan ini algoritma encoding sepertigzip,zstd, danbrotliumumnya juga diterapkan, jadi diperkirakan trafik yang benar-benar ditransmisikan tidak akan terlalu tinggi.Saya juga penasaran bagaimana jika binary-nya dikompresi dengan zstd.
Ini agak topik lain, tetapi saya penasaran apakah proses konversi ke WASM dan penggunaannya berjalan mulus (apakah tidak ada kendala yang dirasakan)!
Saya awalnya membuatnya secara kasar dulu dengan WASM, lalu belakangan hanya logika umum yang dirapikan dan kode sisi server dipisahkan sendiri, jadi tidak ada ketidaknyamanan yang berarti. Malah sekarang, meski kodenya saya ubah secara kasar, perubahan itu tetap diterapkan ke sisi server dan WASM sekaligus, jadi saya cukup puas memakainya. haha