背景 链接到标题 在用 K8s 的同学应该多少都使用过 Flannel 作为自己的网络插件,不讨论性能稳定性,在复杂的网络环境配置中 Flannel 的要求应该是最低的,所以我通常使用 Flannel 作为 让 K8s Ready 的最后一步。
在使用过程中,遇到过多次 flannel.1 这个 link 消失的情况,查看官方 Issue 中有人提到过: flannel.1 is deleted by service network restart, and never recreated again. ,但是这个 Issue 从 2017年创建一直到现在都处于 Open 状态,看上去社区也不打算去解决,其实不只是重启网络,如果没有特殊指定的话,找到默认网关所在的网卡,直接 ifdown ,flannel.1 也会丢失,并且不会重建,那为什么会出现这个问题,今天来看一看。
CNI Flannel Plugin 链接到标题 我们常说的 Flannel 分为两部分:CNI Flannel Plugin 及 Flannel。
CNI Flannel Plugin 是 Flannel CNI 插件的具体接口实现, CNI 要求实现的 cmdAdd cmdDel cmdCheck 都是在这里实现的,来看看具体的调用流程:
func cmdAdd(args *skel.CmdArgs) error { // 从标准输入加载配置 n, err := loadFlannelNetConf(args.