Sebelum menyentuh Flannel, kalian perlu menguasai dasar Kubernetes, konsep CNI, dan Linux networking seperti VXLAN, bridge, dan routing. Di episode ini kalian menyiapkan cluster uji minimal dua node, menginstall Flannel v0.28.x, dan memverifikasi instalasi pertama.

Selamat datang di series Belajar Flannel! Series ini akan membawa kalian menguasai Flannel — CNI yang ringan dan sederhana untuk menghubungkan Pod antar node di Kubernetes — dari fondasi konsep sampai production readiness. Total ada 23 episode yang tersusun dari enam fase.
Sebelum menyentuh flanneld, ada beberapa skill dasar dan perangkat lunak yang wajib kalian miliki. Mengapa prasyarat ini penting? Karena Flannel bekerja di lapisan jaringan host: dia membuat tunnel VXLAN, mengelola route di tabel routing kernel, dan berkoordinasi dengan kubelet lewat CNI. Kalau kalian belum paham arah paket data, semua konfigurasi akan terasa seperti menebak.
Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar, menyiapkan cluster uji minimal dua node, menginstall Flannel v0.28.x, dan melakukan verifikasi pertama. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.
Kalian wajib nyaman dengan konsep Pod, Service, Deployment, dan DaemonSet, karena Flannel di-install sebagai DaemonSet di setiap node. Pahami juga perbedaan Pod network, yaitu alokasi IP per Pod, dengan Service network, yaitu virtual IP untuk load balancing. Dua lapisan ini dihandle oleh komponen yang berbeda, dan di episode 8 kita akan membedah batasnya.
kubectl cluster-info
kubectl get nodes -o widePastikan perintah kubectl get nodes berjalan tanpa error dan menampilkan semua node dalam status Ready.
CNI adalah standar interface antara container runtime, misalnya containerd atau CRI-O, dan plugin jaringan. Saat kubelet membuat Pod baru, dia memanggil plugin CNI melalui konfigurasi di /etc/cni/net.d. Flannel menyediakan plugin flannel yang mendelegasikan pembuatan bridge ke plugin bridge bawaan containernetworking/plugins. Pahami alur dasarnya: Pod dibuat, CNI dipanggil, interface veth dibuat, IP diambil dari subnet node, lalu ditambahkan ke bridge.
Backend default Flannel memakai VXLAN, jadi pahami encapsulation UDP. Kalian juga perlu paham route di kernel, bridge, dan FDB. Pastikan modul kernel br_netfilter, overlay, dan vxlan tersedia di semua node:
lsmod | grep -E "br_netfilter|overlay|vxlan"
sudo modprobe br_netfilter
sudo sysctl -w net.bridge.bridge-nf-call-iptables=1Perintah sudo modprobe br_netfilter memuat modul yang penting sejak kubeadm 1.30. Detailnya akan kita bahas lebih dalam di episode 7.
Install kubectl dengan versi yang cocok dengan cluster kalian, plus helm sebagai opsi instalasi kedua:
kubectl version --client
helm versionKalian akan memakai kubectl apply untuk manifest dan helm install untuk chart.
Untuk menguji multi-node, gunakan salah satu pendekatan: kind yang menjalankan seluruh node dalam container Docker, minikube dengan driver tertentu, atau kubeadm di mesin virtual. Minimal dua node: satu control plane dan satu worker. Flannel yang ringan sangat cocok untuk kind karena cepat di-bootstrap dan hemat sumber daya.
Kita akan memakai Flannel versi v0.28.x, latest stable per penulisan series ini, lewat manifest resmi kube-flannel.yml atau Helm chart flannel/flannel. CNI plugins seperti bridge, portmap, dan bandwidth otomatis dibawa oleh DaemonSet Flannel dan dipasang ke /opt/cni/bin di tiap node.
Simpan konfigurasi berikut sebagai kind-flannel.yaml:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
networking:
podSubnet: 10.244.0.0/16Lalu buat cluster:
kind create cluster --config kind-flannel.yaml
kubectl get nodes -o widePastikan podSubnet: 10.244.0.0/16 konsisten dengan default Flannel. Jika memakai cluster yang sudah ada dengan CIDR berbeda, kalian harus menyesuaikan net-conf.json seperti yang dibahas di episode 3.
Jika memakai kubeadm, inisialisasi control plane dengan CIDR default Flannel:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16Setelah itu ikuti perintah kubeadm join yang ditampilkan untuk setiap worker node.
Di semua node, pastikan sysctl jaringan bridge aktif:
sudo modprobe br_netfilter
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptablesSetting net.bridge.bridge-nf-call-iptables=1 memastikan paket dari Pod yang melewati bridge ikut difilter iptables. Ini penting agar kube-proxy bekerja benar dan wajib disetel sejak kubeadm 1.30.
Untuk cluster satu node, lepas taint control plane terlebih dahulu, lalu install Flannel:
kubectl taint nodes --all node-role.kubernetes.io/control-plane-kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
kubectl get pods -n kube-flannel -o wideTunggu sampai semua Pod kube-flannel berstatus Running, lalu cek interface overlay:
ip -d link show flannel.1Deploy dua Pod yang tersebar di node berbeda, lalu uji koneksi antar Pod:
kubectl create deployment nginx --image=nginx --replicas=2
kubectl get pods -o wide
kubectl exec -it <pod-worker-1> -- curl <ip-pod-worker-2>Jika curl berhasil, environment kalian siap untuk seluruh series. Detail cara kerja di balik layar akan dibedah mulai episode 2.
Rangkuman prasyarat yang sudah kalian siapkan di episode 0:
Di episode 0 ini kalian sudah menyiapkan pijakan untuk seluruh series: memahami skill dasar Kubernetes dan Linux networking, membangun cluster uji multi-node, menginstall Flannel v0.28.x, dan memverifikasi konektivitas Pod pertama kali.
Inti yang harus dibawa pulang:
kube-flannel.yml atau Helm chart.Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa membutuhkan Flannel — dari kelahiran Flannel oleh CoreOS pada 2014, masalah konektivitas Pod lintas node yang dia selesaikan, hingga posisinya sebagai salah satu CNI paling banyak diadopsi. Pastikan cluster uji kalian sudah siap, karena perjalanan Belajar Flannel baru saja dimulai!