flannel源码分析--WatchLeases

在main函数run后端之后,会创建协程调用WatchLeases,如下:

  • for循环中轮询,调用kube.go中对manager接口的实现,接口如下:

    type kubeSubnetManager struct {
    	annotations    annotations
    	client         clientset.Interface
    	nodeName       string
    	nodeStore      listers.NodeLister
    	nodeController cache.Controller
    	subnetConf     *subnet.Config
    	events         chan subnet.Event
    }
    
  • 若events中存在事件,则返回LeaseWatchResult结构体,使用一个event初始化其Events成员,LeaseWatchResult结构体如下:

    type LeaseWatchResult struct {
    	// Either Events or Snapshot will be set.  If Events is empty, it means
    	// the cursor was out of range and Snapshot contains the current list
    	// of items, even if empty.
    	Events   []Event     `json:"events"`
    	Snapshot []Lease     `json:"snapshot"`
    	Cursor   interface{} `json:"cursor"`
    }
    
  • 接着调用update,返回Event结构体变量

	Event struct {
		Type  EventType `json:"type"`
		Lease Lease     `json:"lease,omitempty"`
	}
  • 将Event发送到管道中,此时就会触发管道另一端在等待的main中的Run,也就是vxlan接口中的实现的Run
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值