Episode ini membedah peran plugin CNI di balik Flannel: bridge, portmap, bandwidth, dan plugin flannel di /opt/cni/bin, isi konfigurasi 10-flannel.conflist, serta integrasi Flannel dengan Multus untuk menghadirkan multiple network interfaces pada satu Pod.

Flannel bukan satu program yang melakukan segalanya. Di belakang layar ada kumpulan plugin CNI yang bekerja sama, masing-masing dengan satu tanggung jawab. Episode ini membuka lemari itu.
Kita akan membedah peran bridge, portmap, bandwidth, dan plugin flannel, membaca konfigurasi 10-flannel.conflist, lalu menjelajahi integrasi dengan Multus untuk menghadirkan beberapa interface jaringan pada satu Pod.
Setiap Pod yang dibuat Flannel melewati rantai plugin ini:
ls -la /opt/cni/bin/Output dari ls /opt/cni/bin/ menampilkan binary plugin seperti bridge, portmap, bandwidth, flannel, dan lainnya. Semua binary ini disediakan oleh containernetworking/plugins dan di-mount ke node oleh DaemonSet Flannel.
Kubelet memanggil plugin lewat nama binary di direktori ini. Jika salah satu binary hilang, pembuatan Pod yang butuh plugin tersebut akan gagal. Inilah alasan DaemonSet Flannel memastikan semua binary tersedia di setiap node setiap kali DaemonSet di-deploy.
File konfigurasi CNI untuk Flannel bernama 10-flannel.conflist dan berada di /etc/cni/net.d. Kubelet memakai file ini sebagai definisi jaringan Pod:
{
"name": "flannel",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}Blok pertama memakai plugin flannel yang mendelegasikan pembuatan bridge ke plugin bridge. Blok kedua menambahkan portmap untuk meneruskan port Pod.
cat /etc/cni/net.d/10-flannel.conflistPerintah cat /etc/cni/net.d/10-flannel.conflist menampilkan file yang sama di node. Kalian bisa melihat kubelet memakai konfigurasi ini setiap kali Pod baru dibuat.
Urutan plugin di conflist menentukan urutan eksekusi saat Pod dibuat dan dibuang. Saat dibuang, urutan dibalik. Ini penting dipahami saat memodifikasi conflist: jangan sampai portmap dieksekusi sebelum jaringan utama terbentuk.
Defaultnya sebuah Pod punya satu interface jaringan utama. Kasus seperti DPDK, SR-IOV, atau aplikasi yang butuh beberapa network sekaligus memerlukan lebih dari satu interface. Multus menjembatani ini dengan memungkinkan Pod meng-attach beberapa network sekunder di atas network utama.
Flannel sebagai network utama bisa dikombinasikan dengan Multus melalui NetworkAttachmentDefinition:
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: flannel-net
spec:
config: '{
"cniVersion": "0.3.1",
"type": "flannel",
"delegate": {
"isDefaultGateway": true
}
}'Definisi di atas membuat network flannel-net yang bisa di-attach ke Pod. Annotation pada Pod memilih network yang mana:
apiVersion: v1
kind: Pod
metadata:
name: multi-net-pod
annotations:
k8s.v1.cni.cncf.io/networks: flannel-net
spec:
containers:
- name: app
image: busyboxPerhatikan pola ini: network utama tetap ditangani kubelet, sementara network tambahan dikelola Multus berdasarkan annotation.
Menambah Multus menambah kompleksitas operasional. Pastikan kebutuhan multiple networks benar-benar ada sebelum menambahkan lapisan ini. Untuk mayoritas workload, satu network Flannel sudah lebih dari cukup.
Gejala paling umum saat plugin bermasalah: Pod stuck di status ContainerCreating. Periksa event-nya:
kubectl describe pod <nama-pod> | tail -20Output dari kubectl describe pod menunjukkan error CNI secara spesifik, misalnya plugin bridge tidak ditemukan atau portmap gagal dimuat. Dari pesan itu, kalian bisa tahu plugin mana yang perlu dicek.
Jika error menyebut binary yang tidak ada, periksa direktori CNI di node:
kubectl -n kube-flannel get pods -l k8s-app=flannel -o widePod kube-flannel yang sehat memastikan plugin tersedia di node. Restart DaemonSet biasanya memperbaiki node yang kehilangan binary karena update image.
Episode 11 membuka kotak plugin CNI di balik Flannel: peran bridge, portmap, dan bandwidth, isi 10-flannel.conflist, serta integrasi dengan Multus untuk multiple networks.
Inti yang harus dibawa pulang:
Di episode 12 selanjutnya kita akan memantau kesehatan Flannel: observability dan monitoring dasar — membaca log flanneld, metrik seperti subnet allocations dan healthcheck, serta inspeksi route table, interface VXLAN, dan tabel ARP/FDB.