这个项目能做什么

Flannel 是一个简单高效的网络织物解决方案,主要设计用于 Kubernetes 环境,但也支持 Docker 部署。其核心功能是在集群中的多个节点之间建立三层 IPv4 网络,确保每个容器(Pod)拥有唯一且可路由的 IP 地址。此模型通过消除与共享主机 IP 相关的复杂性来简化网络配置。 ### 核心架构 Flannel 通过一个名为 `flanneld` 的轻量级二进制代理运行,该代理在集群中的每个主机上执行。该代理负责从更大的预配置地址空间中为每个主机分配特定的子网租约。为了维护状态和配置,Flannel 使用 Kubernetes API(称为 kube 子网管理器)或外部 etcd 集群。这种灵活性使其能够存储网络配置、已分配的子网以及主机公共 IP 等辅助数据。 ### 后端机制 主机之间的数据包转发通过多种后端机制处理。这些包括用于覆盖网络的 VXLAN 以及针对不同云提供商定制的特定集成。用户可以根据其基础设施需求选择最适合的后端。 ### 网络策略支持 虽然 Flannel 专注于连接性而非策略执行,但它提供了集成网络策略的选项: - **集成控制器:** Flannel Helm 图表包含一个选项,可在 Flannel 旁边部署 Kubernetes SIGs 网络策略控制器。 - **第三方控制器:** 用户可以将 Flannel 与 Calico 或 Cilium 等其他项目配对,以实现高级策略执行,可能使用 CNI 链式连接。 ### 部署选项 对于 Kubernetes 集群,Flannel 可以手动部署或通过包管理器部署: - **kubectl:** 用户可以使用 `kubectl apply` 直接应用官方清单。 - **Helm:** 专门的 Helm 仓库允许轻松安装和配置管理。 建议使用特定版本附带的清单以确保兼容性。此外,部署 Flannel 需要 `br_netfilter` 内核模块,并在 `/opt/cni/bin` 中安装 CNI 网络插件。 对于非 Kubernetes 环境(如独立的 Docker 设置),Flannel 始终依赖 etcd 作为其数据存储。文档提供了这些场景的详细指导。 ### 社区与许可 Flannel 是一个开源项目,采用 Apache 2.0 许可证。它维护着活跃的社区,定期举行维护者会议,提供 Slack 频道支持(Rancher Slack 上的 #k3s,Calico Slack 上的 #flannel-users),以及涵盖构建、配置、故障排除和集成的全面文档。