
Flannel 是一款轻量级的 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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务