Flannel在每台主机上运行一个名为flanneld的小型二进制代理,负责从一个更大的、预先配置的地址空间中为每台主机分配子网租赁。Flannel使用Kubernetes API或etcd直接存储网络配置、分配的子网和任何辅助数据(例如主机的公共IP)。数据包使用多种后端机制中的一种转发,包括VXLAN和各种云集成。
flannel包含两个关键的组件
1.flanneld
在每个节点上运行的代理程序,负责与etcd交互、获取子网信息、维护路由规则,并通过底层网络设备实现Overlay网络。
2.etcd
作为Flannel的后端存储,存储着整个集群的网络配置信息,包括每个节点的子网分配情况等。
像Kubernetes这样的平台假设每个容器(pod)在集群中都有一个唯一的、可路由的IP。该模型的优点是它消除了由于共享单个主机IP而带来的端口映射复杂性。
Flannel负责在集群中的多个节点之间提供第3层IPv4网络。Flannel不控制容器如何联网到主机,只控制主机之间的流量传输方式。然而,flannel确实为Kubernetes提供了一个CNI插件以及与Docker集成的指导。
Flannel专注于社交。对于网络策略,可以使用其他项目,如Calico。
我目前环境k8s版本是1.28.x,flannel可以使用目前最新的版本v0.27.2,下面我们来看下安装过程。
首先下载flannel部署的yaml文件
wget https://github.com/flannel-io/flannel/releases/download/v0.27.2/kube-flannel.yml
这个文件主要修改以下Network部分,将此地址修改为k8s初始化时podSubnet设置的地址范围一致即可。
net-conf.json: |
{
"Network": "10.244.0.0/16",
"EnableNFTables": false,
"Backend": {
"Type": "vxlan"
}
}
然后就可以直接进行安装
kubectl apply -f kube-flannel.yml
安装完成以后它会拉取两个镜像,由于现在网络限制,所以我们需要自行准备这两个镜像
ghcr.io/flannel-io/flannel:v0.27.2
ghcr.io/flannel-io/flannel-cni-plugin:v1.7.1-flannel1
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1118
相关阅读
- k8s中harbor-database-0日志报Permissions should be u=rwx (0700)的处理方法
- k8s使用helm部署harbor镜像仓库并使用nodeport方式暴露
- k8s集群部署prometheus/node-exporter/dcgm-exporter
- k8s中calico匹配多种网络接口名字的方法
- ubuntu22.04使用containerd部署k8s集群
- k8s集群kube-proxy从iptables模式切换到ipvs模式
- k8s级联删除(删除deployment却删除不了rs和pod)异常问题的处理办法
- k8s中修改containerd存储目录并将数据迁移到新磁盘目录
- k8s网络cni插件calico的安装和网络模式切换
- k8s中pod使用RDMA网卡的方法(待验证)
评论列表