赞
踩
本文QQ空间的链接:http://user.qzone.qq.com/29185807/blog/1461123088
本文csdn博文的链接:http://blog.csdn.net/screscent/article/details/51199351
源码为k8s v1.1.1
我们先整体的流程走一遍,不用太过于关心看不看的懂,先有个整体的流程概念,后续再一步一步分析
先从main开始
代码在k8s.io\kubernetes\cmd\kubectl\kubectl.go
其中的Factory我们已经分析过了,可以看(【原创】k8s源码分析-----kubectl(2)Factory)
接着我们继续往下看
代码在k8s.io\kubernetes\pkg\kubectl\cmd\cmd.go
这里采用了第三方库github.com/spf13/cobra,如果不了解的可以看下用法介绍https://github.com/spf13/cobra
在一级cmd下,添加了很多的二级cmd,如NewCmdCreate,NewCmdGet,NewCmdDelete等
这里我们就以NewCmdCreate为例,继续跟踪
代码在Z:\work\mywork\trunk\src\k8s.io\kubernetes\pkg\kubectl\cmd\create.go
上面先是从Factory里获取一系列参数,然后通过NewBuilder的一系列动作,获取到了Result
接着调用了Result的visit函数,并传入了回调函数
1、利用第三方库github.com/spf13/cobra构建多级command
2、利用Factory对参数识别,并做一些处理
3、利用builder进行构建visitors
4、对builder构建的visitors,进行处理
整体上来看,流程还是很清晰的。主要部分有Factory,已经有讲解过了。再接着就是builder
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。