Episode ini membedah seluruh opsi konfigurasi flanneld: flags dan environment seperti net-conf.json dan pemilihan interface, tuning MTU dan VNI, serta cara memilih interface host yang tepat melalui --iface dan mengaktifkan IP masquerade.

Flannel terkenal karena kesederhanaannya, dan kesederhanaan itu terlihat di konfigurasi: satu file JSON utama ditambah beberapa flags. Namun "sedikit opsi" tidak berarti "tidak penting". Salah pilih interface, MTU, atau VNI bisa membuat jaringan bekerja dengan performa buruk atau gagal total.
Episode 9 membedah setiap opsi konfigurasi flanneld: flags dan environment, net-conf.json, pemilihan interface host, serta tuning MTU dan VNI.
flanneld menerima konfigurasi lewat flags baris perintah dan file net-conf.json. Di instalasi DaemonSet, flags ini terlihat di args container:
containers:
- name: kube-flannel
image: docker.io/flannel/flannel:v0.28.8
args:
- --ip-masq
- --kube-subnet-mgr
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.nameFlag --kube-subnet-mgr memilih datastore Kubernetes API, dan --ip-masq mengaktifkan masquerade. Variabel POD_NAME diperlukan flanneld untuk mengidentifikasi dirinya saat mengelola lease.
kubectl get ds -n kube-flannel kube-flannel-ds -o yaml | grep -A5 argsOutput dari kubectl get ds -n kube-flannel kube-flannel-ds menunjukkan flags yang sedang dipakai cluster kalian.
Semua keputusan besar tetap ada di net-conf.json: pool network, subnet length, dan backend. File ini di-mount dari ConfigMap dan dibaca flanneld saat startup. Mengubah ConfigMap lalu me-restart DaemonSet adalah cara standar menerapkan perubahan.
net-conf.json: |
{
"Network": "10.244.0.0/16",
"SubnetLen": 24,
"Backend": {
"Type": "vxlan"
}
}Field SubnetLen menentukan ukuran subnet per node. Nilai 24 berarti /24 per node, cocok untuk cluster hingga 256 node.
Pada node dengan banyak interface, misalnya eth0, eth1, dan docker0, flanneld bisa salah memilih interface. Jika dia memilih docker0 sebagai jalur VXLAN, traffic antar node gagal karena docker0 tidak menuju jaringan host lain. Gejalanya khas: Pod di node yang sama bisa saling terhubung, tetapi lintas node tidak pernah berhasil.
Untuk memaksa pilihan interface, gunakan flag --iface atau field Iface di net-conf.json:
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
},
"Iface": "eth0"
}Perintah flanneld --iface eth0 juga bisa dipakai sebagai flag. Pilih interface yang benar-benar menuju jaringan host lain, biasanya yang dipakai kubelet untuk berkomunikasi.
Verifikasi pilihan flanneld dari interface VXLAN yang terbentuk:
ip -d link show flannel.1Kolom local pada output ip -d link show flannel.1 menunjukkan IP host yang dipilih flanneld sebagai sumber encapsulation. Pastikan itu IP yang benar.
Secara default flanneld menghitung MTU otomatis dari interface host dikurangi overhead backend. Untuk VXLAN, overheadnya 50 bytes. Jika host memakai jumbo frame, misalnya MTU 9000, flannel.1 otomatis menjadi 8950. Field MTU di net-conf.json bisa memaksa nilai tertentu saat jaringan kalian punya pembatasan.
net-conf.json: |
{
"Network": "10.244.0.0/16",
"MTU": 1450,
"Backend": {
"Type": "vxlan"
}
}Perhitungan MTU yang benar akan dibahas menyeluruh di episode 16.
VNI membedakan satu jaringan VXLAN dari jaringan lain di segmen yang sama. Default 1 hampir selalu cukup, tetapi jika kalian memakai VXLAN lain di host yang sama, naikkan VNI agar tidak bentrok. Pastikan nilainya konsisten di seluruh node.
Masquerade diperlukan saat Pod harus mengakses internet atau layanan di luar subnet Pod. Tanpa masquerade, paket keluar memakai IP Pod yang tidak ter-routing, dan return traffic hilang. Flag --ip-masq mengaktifkannya.
cat /run/flannel/subnet.env | grep FLANNEL_IPMASQJika FLANNEL_IPMASQ bernilai true dari cat /run/flannel/subnet.env, masquerade berjalan. Untuk jaringan internal murni yang tidak butuh akses keluar, masquerade bisa dimatikan untuk menghemat satu lapisan pemrosesan.
Episode 9 membekali kalian kendali penuh atas konfigurasi Flannel: flags dan environment flanneld, isi net-conf.json, pemilihan interface host lewat Iface, serta tuning MTU dan VNI.
Inti yang harus dibawa pulang:
--kube-subnet-mgr memilih datastore Kubernetes API; --ip-masq mengaktifkan masquerade.Di episode 10 selanjutnya kita akan berskala: multi-node deployment dan scaling — membangun cluster kubeadm tiga node, memverifikasi routing dan overlay, memahami failure domain, dan menilai batas skala Flannel serta kapan harus beralih ke CNI yang lebih canggih.