Flannel是一个专为Kubernetes设计的开源网络插件(CNI),旨在为集群中的Pod提供跨节点的网络连接,实现Pod间的高效通信;它通过为每个节点分配独立子网,确保Pod拥有唯一IP地址,并支持vxlan、host-gw等多种后端模式,简化网络配置,帮助用户轻松构建跨节点的Kubernetes网络环境,是轻量级且广泛应用的容器网络解决方案。
收藏数: 9
下载次数: 18384930
状态: active
发布者: flannel
类型: 镜像
flannel/flannelFlannel 是一款轻量级的 Kubernetes CNI(容器网络接口)插件,主要目标是解决 Kubernetes 集群中跨节点 Pod 的网络通信问题。由 CoreOS(现 Kinvolk)开发维护,Flannel 设计理念简洁,部署和维护成本低,适合中小规模集群或对网络配置复杂度敏感的场景。
Flannel 为集群中的 Pod 分配独立的私有 IP 段(默认 10.244.0.0/16),并通过覆盖网络(Overlay Network)技术,将不同节点上的 Pod 网络“打通”。跨节点的 Pod 可通过各自的 IP 直接通信,无需经过 NAT 转换。
支持多种底层网络后端,可根据集群环境灵活选择:
Flannel 与 Kubernetes 集成,通过 etcd(旧版本)或 Kubernetes API(新版本,推荐)动态管理 Pod IP 池。无需手动分配 IP,节点加入集群后自动从 IP 池中获取子网,避免 IP 冲突。
组件轻量:每个节点仅运行 flanneld 守护进程(负责网络配置同步)和 CNI 二进制文件(flannel),内存占用通常低于 50MB,CPU 消耗可忽略,对节点资源影响小。
kubeadm init 或其他工具部署),节点间网络互通(至少开放 8472/UDP 端口,vxlan 后端需要);firewalld 需放行 8472/UDP、6443/TCP 等);通过官方 YAML 一键部署(推荐使用最新版本,适配 Kubernetes 1.24+):
bashkubectl apply -f [***] > 注:旧版本 Kubernetes(如 1.16-1.23)可能需要调整 YAML 中的 `net-conf.json` 或镜像版本,具体参考 Flannel 文档。 ### 3. 验证安装 - **检查 Pod 状态**:Flannel 以 DaemonSet 形式运行,每个节点一个 Pod,需确保所有 Pod 状态为 `Running`: ```bash kubectl get pods -n kube-flannel # 输出示例: # NAME READY STATUS RESTARTS AGE # kube-flannel-ds-abc12 1/1 Running 0 5m # kube-flannel-ds-def34 1/1 Running 0 5m
检查节点网络接口:节点应新增 flannel.1 接口(vxlan 后端),用于跨节点通信:
baship link show flannel.1 # 输出示例: # 4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN mode DEFAULT group default
测试跨节点 Pod 通信:在不同节点创建 Pod,验证 IP 连通性。例如:
bash# 在 node-1 创建测试 Pod kubectl run test-node1 --image=busybox --rm -it -- sh # 在 Pod 内获取 IP(假设为 10.244.1.2) # 在 node-2 创建测试 Pod kubectl run test-node2 --image=busybox --rm -it -- sh # 在 Pod 内 ping node-1 的 Pod IP ping 10.244.1.2 # 应能通
默认使用 vxlan 后端,若节点在同一子网(如本地物理机集群),可切换为 host-gw 提升性能:
bashkubectl edit configmap kube-flannel-cfg -n kube-flannel
net-conf.json 中的 Backend 字段:
json{ "Network": "10.244.0.0/16", "Backend": { "Type": "host-gw" # 原为 "vxlan" } }
bashkubectl rollout restart daemonset kube-flannel-ds -n kube-flannel
网络路径 MTU 需一致,否则可能导致数据包丢失或延迟。vxlan 后端默认 MTU 为 1450(物理网络 MTU 1500 减去 50 字节封装开销),若底层网络 MTU 小于 1500(如部分云厂商默认 MTU 为 1460),需手动调整:
Backend 中添加 MTU 字段:
json"Backend": { "Type": "vxlan", "MTU": 1420 # 例如底层 MTU 1460 时,1460 - 40(vxlan 封装)= 1420 }
默认 IP 池为 10.244.0.0/16,若需修改(如避免与现有网络冲突):
Network 字段),将 10.244.0.0/16 替换为目标网段(如 10.100.0.0/16);kubeadm init 时 --pod-network-cidr 参数一致(若用 kubeadm 部署集群)。/etc/cni/net.d/ 目录下的文件),否则 Flannel 无法正常启动;flanneld 依赖节点 IP 通信,若节点 IP 动态变化(如云环境弹性节点),需在节点启动脚本中重新启动 flanneld 或配置固定 IP;bashkubectl logs -n kube-flannel <flannel-pod-name> -c kube-flannel
以下是 flannel/flannel 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务