flannel源码分析--RegisterNetwork
main函数中RegisterNetwork会根据不同的后端类型调用不同的RegisterNetwork,这里以vxlan为例:
定义cfg变量匿名结构体,并使用Unmarshal解析配置文件初始化cfg,结构体如下:
struct {VNI intPort intGBP boolLearning boolDirectRouting bool }
初始化vxlanDeviceAttrs结构体变量devAttrs
vxlanDeviceAttrs{vni: uint32(cfg.VNI),name: fmt.Sprintf("flannel.%v", cfg.VNI),vtepIndex: be.extIface.Iface.Index,vtepAddr: be.extIface.IfaceAddr,vtepPort: cfg.Port,gbp: cfg.GBP,learning: cfg.Learning, }
使用newVXLANDevice新建vxlan设备,devAttrs作为参数,完成设备的初始化,vxlan设备结构体如下:
type vxlanDevice struct {link *netlink.VxlandirectRouting bool }type Vxlan struct {LinkAttrsVxlanId intVtepDevIndex intSrcAddr net.IPGroup net.IPTTL intTOS intLearning boolProxy boolRSC boolL2miss boolL3miss boolUDPCSum boolNoAge boolGBP boolAge intLimit intPort intPortLow intPortHigh int }type LinkAttrs struct {Index intMTU intTxQLen int // Transmit Queue LengthName stringHardwareAddr net.HardwareAddrFlags net.FlagsRawFlags uint32ParentIndex int // index of the parent link deviceMasterIndex int // must be the index of a bridgeNamespace interface{} // nil | NsPid | NsFdAlias stringStatistics *LinkStatisticsPromisc intXdp *LinkXdpEncapType stringProtinfo *ProtinfoOperState LinkOperState }
newSubnetAttrs新建并初始化subnet.LeaseAttrs属性
AcquireLease分配子网租约
newNetwork创建网络
flannel源码分析--RegisterNetwork相关推荐
- flannel源码分析--main
1.init init函数:进行flannelFlags的初始化,有etcd.iface(网卡).iface-regex(接口匹配正则).subnetFile(子网配置).public-ip(外部访问 ...
- flannel源码分析--InClusterConfig
newSubnetManager创建子网管理时,通过BuildConfigFromFlags从master url或kubeconfig文件路径创建,若失败则会回调到InClusterConfig 获 ...
- flannel源码分析--newSubnetManager
main函数中调用newSubnetManager创建子网管理,具体流程如下: 如果命令行opts中指定了子网管理,则通过命令行中的参数调用NewSubnetManager BuildConfigFr ...
- flannel源码分析--LookupExtIface
main函数中LookupExtIface查找网卡,主要流程如下 通过ParseIP解析IP,并用net.IP存储 GetInterfaceByIP,将ip传入,net.Interfaces获取所有网 ...
- flannel源码分析--WatchLeases
在main函数run后端之后,会创建协程调用WatchLeases,如下: for循环中轮询,调用kube.go中对manager接口的实现,接口如下: type kubeSubnetManager ...
- flannel源码分析--handleSubnetEvents
当main进程启动后端后,会触发handleSubnetEvents处理事件 新建vxlanRoute路由,用作流量封包,结构如下: netlink.Route{LinkIndex: nw.dev.l ...
- Docker源码分析(六):Docker Daemon网络
http://www.infoq.com/cn/articles/docker-source-code-analysis-part6 1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已 ...
- 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...
- SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...
最新文章
- java生成扑克牌----java基础学习总结
- 成功解决AttributeError: 'DataFrame' object has no attribute 'tolist'
- maskView与CAGradientLayer详解
- html不支持元素video,Html5中的Video元素使用方法
- 网络协议及IP地址分类
- 跨域会报40几_总结一下跨域的几种情况
- oracle将千万行查询优化到一秒内,oracle下一条SQL语句的优化过程(比较详细)
- python 归一化_数据的标准化和归一化
- 选择器高级、样式及布局
- html5 css练习 定位布局
- 成品app直播源码,设置ViewPager不可滑动
- linux运行natapp,Centos使用natapp教程
- 数据库表文档生成工具screw (螺丝钉)
- 游戏策划入门教程(前言)
- 宫崎骏电影-Music
- 微信开发学习二 -- 微信开发入门(简单demo)
- java ebcdic_java EBCDIC | 学步园
- 会员卡充值系统小程序开发制作功能介绍
- xxx牌JUC学习加油奥利给001初始篇章
- c# asp.net mvc使用斑马GK888t打印机打印标签
热门文章
- 如何用python画数据图-用Python如何画出数据可视化图呢?本文详解
- 初学python还是swift-Swift 势必取代 Python?
- 用python画烟花-用python做一个烟花show
- python装饰器实例-Python装饰器用法实例总结
- 流程的python-什么时候学流畅的python合适?
- 学python买什么电脑-程序员,买了台破Apple电脑,用来学Python
- python网上编程课程-少儿编程 为你解读Python编程课程
- python使用del保留字定义一个函数-函数和代码复用 --Python
- python中的os.mkdir和os.makedirs的使用区别,以及如何查看某个模块中的某些字母开头的属性方法
- java 覆盖和隐藏_Java覆盖和隐藏2