编译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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用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