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
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429