Flannel 是一种简单易用的三层网络 fabric 配置方式,专为 Kubernetes 设计。
Flannel 在每台主机上运行一个名为 flanneld 的小型单二进制代理,负责从预先配置的更大地址空间中为每台主机分配子网租约。
Flannel 要么使用 Kubernetes API,要么直接使用 etcd 存储网络配置、已分配的子网以及任何辅助数据(例如主机的公网 IP)。
数据包通过多种 后端机制 之一进行转发,包括 VXLAN 和各种云集成。
像 Kubernetes 这样的平台假设每个容器(pod)在集群内都有一个唯一的、可路由的 IP。 这种模型的优势在于,它消除了因共享单个主机 IP 而产生的端口映射复杂性。
Flannel 负责在集群中的多个节点之间提供三层 IPv4 网络。Flannel 不控制容器如何与主机联网,只控制主机之间的流量传输方式。不过,Flannel 确实为 Kubernetes 提供了 CNI 插件,并提供了与 Docker 集成的指导。
Flannel 专注于网络功能。对于网络策略,可以使用 Calico 等其他项目。
在 Kubernetes 上部署 Flannel 最简单的方法是使用默认通过 Flannel 为集群提供网络的多种部署工具和发行版之一。例如,K3s 使用开源的 https://github.com/k3s-io/k3s/#quick-start---install-script 驱动设置过程,在其创建的 Kubernetes 集群中设置 Flannel。
虽然非必需,但建议 Flannel 使用 Kubernetes API 作为其后端存储,这样可以避免为 flannel 部署独立的 etcd 集群。这种 flannel 模式被称为 kube 子网管理器。
Flannel 可以添加到任何现有的 Kubernetes 集群,但最简单的方法是在启动任何使用 pod 网络的 pod 之前添加 flannel。
适用于 Kubernetes v1.17+
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
如果使用自定义 podCIDR(非 10.244.0.0/16),则需要先下载上述清单并修改网络以匹配您的 podCIDR。
# 需要手动创建命名空间以避免 Helm 错误
kubectl create ns kube-flannel
kubectl label --overwrite ns kube-flannel pod-security.kubernetes.io/enforce=privileged
helm repo add flannel https://flannel-io.github.io/flannel/
helm install flannel --set podCidr="10.244.0.0/16" --namespace kube-flannel flannel/flannel
有关更多详情,请参见 Kubernetes。
如果配置了防火墙,请确保启用已配置 后端 使用的正确端口。
Flannel 默认使用 portmap 作为 CNI 网络插件;部署 Flannel 时,确保 https://github.com/containernetworking/plugins 已安装在 /opt/cni/bin 中,最新二进制文件可通过以下命令下载:
ARCH=$(uname -m)
case $ARCH in
armv7*) ARCH="arm";;
aarch64) ARCH="arm64";;
x86_64) ARCH="amd64";;
esac
mkdir -p /opt/cni/bin
curl -O -L https://github.com/containernetworking/plugins/releases/download/v1.7.1/cni-plugins-linux-$ARCH-v1.7.1.tgz
tar -C /opt/cni/bin -xzf cni-plugins-linux-$ARCH-v1.7.1.tgz
Flannel 需要 br_netfilter 模块才能启动,并且从 kubeadm 1.30 版本开始,kubeadm 不再检查该模块是否已安装,如果缺少该模块,Flannel 将无法正常启动。
Flannel 在 Kubernetes 之外也被广泛使用。在 Kubernetes 之外部署时,etcd 始终用作数据存储。有关将 Flannel 与 Docker 集成的更多详情,请参见 运行。
Flannel 维护者社区每月第三个星期四上午 8:30 PST(16:30 UTC)举行会议。该会议用于讨论问题、开放的拉取请求以及其他与 Flannel 相关的必要主题。
会议议程和 Teams 链接可在此处找到:Flannel 社区会议议程
有关提交补丁和贡献工作流的详情,请参见 CONTRIBUTING。
有关报告任何问题的详情,请参见 报告缺陷。
对于安全问题,请首先查看我们的 安全策略。
Flannel 采用 Apache 2.0 许可。有关详情,请参见 https://github.com/flannel-io/flannel/blob/master/LICENSE 文件。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务