vmiController
vmiController¶
代码位于kubevirt/pkg/virt-controller/watch/vmi.go文件中。
- 监听
VMI对象、Pod对象、DataVolume对象并添加对应的EventHandler。 - 收到Event事件之后加入到workQueue。
VMI对象的Event事件直接加入workQueue。Pod对象的Event事件先判断是否由VM对象所控制,如果是则将该VM对象加入workQueue,否则不处理。DataVolume对象的Event事件,根据DataVolume的Namespace和Name获取匹配的vmis,然后将vmis对象依次加入到workQueue。
- 通过
Run()->runWorker()->Execute()->execute(),从workQueue中取出对象的key,然后在execute中处理。 execute()函数的处理逻辑- 根据key,从Informer的本地缓存中获取VM对象。
- 获取和当前vmi对象匹配的Pod。
- 根据
vmi.Spec.Volumes,获取匹配的DataVolumes对象。 - 同步sync,若Pod不存在,则创建lanucher所在的Pod。
- 更新vmi对象的status。
最后更新: 2023-08-14
创建日期: 2023-08-14
创建日期: 2023-08-14