Episode ini membangun observability dasar untuk Flannel: membaca log flanneld, memanfaatkan metrik seperti subnet allocations dan healthcheck, serta menginspeksi route table, interface VXLAN, dan tabel ARP/FDB untuk mendiagnosis kesehatan jaringan.

Flannel yang sehat terasa seperti tidak ada: Pod saling terhubung, tidak ada yang perlu diperhatikan. Tapi ketika ada masalah, observability adalah penyelamatnya. Untungnya Flannel menyediakan log, metrik, dan state yang bisa diperiksa secara langsung.
Episode 12 membangun observability dasar: cara membaca log flanneld, metrik yang diekspos flanneld, dan inspeksi state jaringan seperti route, ARP, dan FDB.
Setiap kejadian penting flanneld tercatat di log Pod. Mulai dari startup, pengambilan lease, sampai sinkronisasi route, semuanya ada di sini:
kubectl logs -n kube-flannel -l k8s-app=flannel -fPerintah kubectl logs -n kube-flannel -l k8s-app=flannel menampilkan log semua flanneld sekaligus. Untuk satu node, tambahkan flag nama Pod:
kubectl logs -n kube-flannel <nama-pod> --tail=50Baris log dengan kata error atau failed adalah alarm pertama. Contoh: failed to acquire subnet lease, atau unable to contact API server. Kedua pola ini langsung mengarah ke datastore atau izin, bukan ke jaringan itu sendiri.
flanneld mengekspos metrik Prometheus di port 9091 di dalam Pod. Metrik paling berguna adalah flannel_subnets_total, yang menunjukkan jumlah subnet yang dikenal node tersebut.
kubectl exec -n kube-flannel -l k8s-app=flannel -- wget -qO- localhost:9091/metrics | grep flannel_subnetsOutput dari perintah di atas menunjukkan nilai metrik yang bisa dipakai untuk memverifikasi sinkronisasi: setiap node seharusnya melihat jumlah subnet yang sama dengan jumlah node.
Selain metrik, flanneld memiliki endpoint healthcheck yang bisa dipakai probe. Menggabungkan metrik dan log memberi sinyal kesehatan yang cukup untuk memantau jaringan tanpa tool tambahan.
Cara paling langsung memverifikasi jaringan: cek route yang mengarah ke subnet node lain:
ip route | grep flannelOutput dari ip route | grep flannel menampilkan satu route per node lain. Jika salah satu subnet hilang, sinkronisasi lease node itu bermasalah.
Periksa detail interface untuk memastikan status dan MTU:
ip -d link show flannel.1Kolom state dan MTU pada ip -d link show flannel.1 memberi tahu apakah interface up dan apakah MTU sesuai perhitungan.
Dua tabel ini menentukan kemana paket dibungkus:
ip neigh show dev flannel.1
bridge fdb show dev flannel.1Perintah ip neigh show dev flannel.1 menampilkan neighbor MAC, dan bridge fdb show dev flannel.1 menampilkan pemetaan ke IP host. Jika salah satu kosong padahal node lain ada, sinkronisasi belum selesai.
Untuk produksi, gabungkan metrik flanneld ke Prometheus. Buat Service yang mengarah ke port 9091 tiap Pod flanneld, lalu definisikan ServiceMonitor atau scrape config:
apiVersion: v1
kind: Service
metadata:
name: kube-flannel-metrics
namespace: kube-flannel
spec:
selector:
k8s-app: flannel
ports:
- name: metrics
port: 9091Perhatikan selector k8s-app: flannel yang menyamai label Pod DaemonSet. Setelah Service dibuat, Prometheus bisa diarahkan untuk men-scrape port metrics tersebut.
Beberapa kondisi layak di-alert: Pod kube-flannel restart terlalu sering, metrik flannel_subnets_total berbeda antar node, dan jumlah node tidak sesuai dengan subnet yang terlihat. Alert sederhana ini menangkap mayoritas kegagalan jaringan Flannel sebelum user melaporkannya.
Episode 12 memberi kalian alat observability dasar Flannel: log untuk membaca kejadian, metrik untuk memantau kesehatan, dan inspeksi route, ARP, serta FDB untuk verifikasi langsung.
Inti yang harus dibawa pulang:
Di episode 13 selanjutnya kita akan mengamankan Flannel: security dan hardening — memahami model keamanan Flannel yang fokus pada connectivity, serta mengaktifkan backend WireGuard dan IPsec untuk enkripsi traffic antar node.