作者介绍:Kube-OVN社区贡献者 Mr.Li
作者说:上文“kube-ovn源码解析(一)kube-ovn-controller”中我们提到kube-ovn-controller组件有一个重要的功能是负责管理pod的IP地址分配、回收,本文就主要介绍下这部分逻辑。
简单来说,就是用户创建pod的时候会显式或隐式指明这个pod需要使用哪个网络(subnet),kube-ovn-controller通过list-watch机制获取到pod add事件,然后取出相关信息为pod分配IP/mac。当pod删除的时候,获取pod del事件释放对应IP/mac。
当然kube-ovn-controller不仅仅是为pod分配IP而已,也会为pod网卡创建对应的ovn port、路由等信息,我们在后续的代码走读中也会看到。
Controller相关流程
pod事件list-watch
controller初始化的时候会初始化pod事件的监听者,同时初始化事件队列。当有pod事件如add、update、delete事件触发时,会将pod信息入队到事件队列中,后续由controller启动的worker从队列中取出事件处理。
worker启动
worker处理pod add事件
handleAddPod:实际的处理函数
关键函数1:getPodKubeovnNets
getPodAttachmentNet函数根据2个annotation获取pod的所有网络信息,分别是"v1.multus-cni.io/default-network"指定默认主网卡的网络,"k8s.v1.cni.cncf.io/networks"指定pod使用的其他副网卡网络。
继续返回handleAddPod处理,从上文我们可以知道podNets是个数组,保存了pod所有网卡对应的网络信息,
Kube-OVN源码解析系列由社区成员倾情奉献
手把手教你征服Kube-OVN
下期:我们讲 “ pod 网卡管理(CNI插件)”
敬请期待!
加小助手VX号(KubeOVN)进入Kube-OVN 交流群!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)