【原创】k8s源码分析-----kubectl(3)主要框架

本文详细分析了k8s kubectl命令的执行流程,包括从main函数开始,到kubectlcommand、cmdCreate的实现,以及visitor模式在构建visitors中的应用。重点介绍了URLVisitor、FileVisitor、streamVisitor、selectorVisitor和infoVisitor,还有builder如何根据不同的输入参数构建visitors。同时,阐述了Info visitor的工作原理,涉及RESTClient和Helper的角色。整个设计思路清晰,适合对k8s源码感兴趣的读者深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文QQ空间的链接:http://user.qzone.qq.com/29185807/blog/1461123088

本文csdn博文的链接:http://blog.youkuaiyun.com/screscent/article/details/51199351

 

源码为k8s v1.1.1

 

1、整体流程

我们先整体的流程走一遍,不用太过于关心看不看的懂,先有个整体的流程概念,后续再一步一步分析

1.1 main

先从main开始

代码在k8s.io\kubernetes\cmd\kubectl\kubectl.go

其中的Factory我们已经分析过了,可以看(【原创】k8s源码分析-----kubectl(2)Factory

 

1.2 kubectlcommand

接着我们继续往下看

代码在k8s.io\kubernetes\pkg\kubectl\cmd\cmd.go

这里采用了第三方库github.com/spf13/cobra,如果不了解的可以看下用法介绍https://github.com/spf13/cobra

 

在一级cmd下,添加了很多的二级cmd,如NewCmdCreate,NewCmdGet,NewCmdDelete等

 

1.3 cmdCreate

这里我们就以NewCmdCreate为例,继续跟踪

 

代码在Z:\work\mywork\trunk\src\k8s.io\kubernetes\pkg\kubectl\cmd\create.go

上面先是从Factory里获取一系列参数,然后通过NewBuilder的一系列动作,获取到了Result

接着调用了Result的visit函数,并传入了回调函数

 

1.4 小结

1、利用第三方库github.com/spf13/cobra构建多级command

2、利用Factory对参数识别,并做一些处理

3、利用builder进行构建visitors

4、对builder构建的visitors,进行处理

 

整体上来看,流程还是很清晰的。主要部分有Factory,已经有讲解过了。再接着就是builder,这里的builder利用的是一个visitor设计模式,builder负责visitors的构建,然后在主command中,对visitors进行相关处理。

2、visitor

既然说builder是一个visitor模型

那么就先从visit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值