A simple layer 3 network fabric for Kubernetes containers that provides each pod with a unique, routable IP address.
Flannel is a network fabric designed specifically for Kubernetes that simplifies container networking by providing a layer 3 IPv4 network between cluster nodes. It enables each pod to have a unique, routable IP address within the cluster, eliminating port mapping complexities that arise from sharing a single host IP. It runs a lightweight agent on each host to allocate subnet leases and supports various packet forwarding backends.
Kubernetes administrators and operators who need a simple, reliable networking solution for their clusters, as well as developers using Docker outside of Kubernetes who require overlay networking. It is particularly suited for those using distributions like K3s that integrate it by default.
Developers choose Flannel for its simplicity, specialized focus on networking transport, and seamless Kubernetes integration via a CNI plugin. Its support for multiple backends (like VXLAN and cloud integrations) and flexible data store options (Kubernetes API or etcd) provide adaptability without complexity.
flannel is a network fabric for containers, designed for Kubernetes
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The README highlights that Flannel can be deployed with a single kubectl apply command, and it's pre-integrated into distributions like K3s, minimizing setup complexity.
Supports multiple backends such as VXLAN and cloud integrations, allowing adaptation to different infrastructure needs without overhauling core configuration, as detailed in the backends documentation.
Uses the Kubernetes API as a backing store in 'kube subnet manager' mode, eliminating the need for a separate etcd cluster and simplifying cluster management, which is recommended in the deployment guide.
Runs a single binary agent (flanneld) on each host, focusing solely on network transport with minimal resource consumption, aligning with its philosophy of simplicity.
Flannel explicitly states it does not handle network policy, requiring integration with separate projects like Calico for security enforcement, which adds complexity and operational overhead.
The README warns that Flannel requires the br_netfilter module, and from version 1.30, kubeadm doesn't check for it, leading to potential startup failures if not manually configured.
Deploying with custom podCIDR requires downloading and modifying manifests manually, as noted in the instructions, which can introduce errors and is less automated than some alternatives.