Kumpulkan log pod kubernetes
Saya mencoba mengumpulkan log wadah aplikasi saya sepanjang siklus hidup mereka. Wadah ini berjalan di dalam pod Kubernetes, saya telah menemukan solusi seperti Fluentd tetapi saya juga menemukan bahwa saya perlu menentukan backend (Elasticsearch, AWS S3, dll.) Sedangkan saya ingin mengumpulkan log di dalam file yang memiliki nama tertentu, misalnya podname_namespace_containername.json dan kemudian parse file tersebut menggunakan skrip. Apakah ini mungkin dengan fluentd?
Jawaban
Sejauh ini, cara tercepat untuk menyiapkan pengumpulan log adalah https://github.com/helm/charts/tree/master/stable/fluent-bit. Lihat values.yamlsemua opsi yang tersedia. Ini mendukung beberapa backend seperti ES, S3, Kafka. Setiap peristiwa log diperkaya dengan metadata pod (nama pod, namespace, dll) dan diberi tag sehingga Anda dapat mengatur pemrosesan secara terpisah di backend. Misalnya pada backend, Anda hanya dapat memilih dan mengurai pod tertentu di ruang nama tertentu.
Berdasarkan https://kubernetes.io/docs/concepts/cluster-administration/logging/ Anda log ke stdout / stderr, itu akan ditulis ke node yang mendasarinya, pengumpul log (daemonset) mengumpulkan semuanya dan mengirim lebih lanjut.
Daemonset FluentBit di Kubernetes mengimplementasikan arsitektur ini dengan tepat. Lebih banyak dokumen tentang FluentBit:https://docs.fluentbit.io/manual/concepts/data-pipeline