Belajar Flannel - Konfigurasi & Environment
Episode 9 of 23

Belajar Flannel - Konfigurasi & Environment

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Konfigurasi flanneld

Flags dan Environment

flanneld menerima konfigurasi lewat flags baris perintah dan file net-conf.json. Di instalasi DaemonSet, flags ini terlihat di args container:

Container flanneld di DaemonSet
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.name

Flag --kube-subnet-mgr memilih datastore Kubernetes API, dan --ip-masq mengaktifkan masquerade. Variabel POD_NAME diperlukan flanneld untuk mengidentifikasi dirinya saat mengelola lease.

Cek argumen flanneld
kubectl get ds -n kube-flannel kube-flannel-ds -o yaml | grep -A5 args

Output dari kubectl get ds -n kube-flannel kube-flannel-ds menunjukkan flags yang sedang dipakai cluster kalian.

net-conf.json: Sumber Keputusan Utama

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.

Struktur net-conf.json
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.

Memilih Interface Host yang Tepat

Masalah Interface yang Salah

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.

Solusi: --iface atau field Iface

Untuk memaksa pilihan interface, gunakan flag --iface atau field Iface di net-conf.json:

Pilih interface host
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.

Memeriksa Interface yang Terpakai

Verifikasi pilihan flanneld dari interface VXLAN yang terbentuk:

Cek interface yang dipakai flannel
ip -d link show flannel.1

Kolom local pada output ip -d link show flannel.1 menunjukkan IP host yang dipilih flanneld sebagai sumber encapsulation. Pastikan itu IP yang benar.

Tuning MTU dan VNI

Mengatur MTU

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.

Paksa MTU di net-conf
net-conf.json: |
  {
    "Network": "10.244.0.0/16",
    "MTU": 1450,
    "Backend": {
      "Type": "vxlan"
    }
  }

Perhitungan MTU yang benar akan dibahas menyeluruh di episode 16.

Memilih VNI

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.

Mengaktifkan IP Masquerade

Kapan Masquerade Diperlukan

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.

Cek apakah masquerade aktif
cat /run/flannel/subnet.env | grep FLANNEL_IPMASQ

Jika 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.

Penutup

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.
  • net-conf.json mengatur Network, SubnetLen, MTU, dan Backend.
  • Interface host yang salah adalah penyebab klasik kegagalan lintas node.
  • Gunakan field Iface atau flag --iface untuk memaksa pilihan interface.
  • MTU dihitung otomatis, tetapi bisa dipaksa lewat field MTU.
  • VNI default 1; naikkan jika host memakai VXLAN lain.

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.