编译flannel 支持VNI 扩展

实际上属于一个业务问题,有几个k8s 环境,有一个外部服务需要通过rpc 访问k8s 内部的服务,以前是通过
部署了与一个环境一样的flannel 服务,可以保证外部服务与k8s pod 是可以通的,但是现在需要与另外一套环境
的k8s pod 也可以通

参考图

 

 

问题

我们实际是希望可以在vm中可以部署多个flannel 服务,同时是独立的,互不影响,在尝试修改配置之后发现vxlan 网络是可以看到,但是都在flannel1.1 在进行网络测试的时候发现是不行的, 然后大致看了下官方源码发现默认VNI 都是1,如果我们可以将多实例的VNI 分区开问题应该就可以好好的解决了

解决方法

基于flannel 源码构建 ,修改VNI 值为其他的
参考

 
import (
  "encoding/json"
  "fmt"
  "net"
 
  "golang.org/x/net/context"
 
  "github.com/coreos/flannel/backend"
  "github.com/coreos/flannel/pkg/ip"
  "github.com/coreos/flannel/subnet"
)
 
func init() {
  backend.Register("vxlan", New)
}
 
const (
  defaultVNI = 2 // 此处修改为了2,实际可以自己调整,当然也是可以通过配置的
)

构建

通过make 就可以了,注意选择的版本,对于go 小于1.7 的需要使用gopath ,比较推荐使用go mod 构建

CGO_ENABLED=1 make dist/flanneld

参考资料

https://github.com/flannel-io/flannel
https://github.com/rongfengliang/myflannel
https://en.wikipedia.org/wiki/Virtual_Extensible_LAN
https://support.huawei.com/enterprise/en/doc/EDOC1100086966
https://networklessons.com/cisco/ccnp-encor-350-401/introduction-to-virtual-extensible-lan-vxlan

posted on   荣锋亮  阅读(27)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-02-07 使用parcel api 进行npm 项目
2022-02-07 npm 8 的overrides 进行npm 依赖包的重写
2022-02-07 maven 同一个模块加载多个版本的方法
2022-02-07 webjars 的优缺点
2021-02-07 dremio 集群简单部署
2020-02-07 pgspider 常用pg 扩展docker 镜像
2020-02-07 使用 pgspider griddb fdw 让griddb 支持hasura graphql-engine

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示