大家好,我是来自Dockout的张士明我今天给大家分享的题目是Cock,低成本模拟海量的计讯今天一题分为三个部分,什么是CockCock能用来做什么,以及如何去使用Cock我先介绍一下什么是CockCock是Kubernetes without kubelet的一个手字母缩写吧也不算是手字母,中间有个W它的话,核心的意思是我想预刑一个K8集群但是我可能没有这么多资源去...但是我可能没有那么多资源去模拟这么多的节点所以说我们就要想办法以不运行Kubelet的方式去模拟更多的一些节点然后Cock的话,它核心分为了两个组件一个是Cock的核心组件是Cock Controller它的话,它可以模拟任意数量的Port和Node并且它可以任意定义Port和Node的一些生命周期它的行为、它的动作你可以让它表现出任意你想要的形式就比如说Port的状态一直在Ready和NodeReady一直在反复切换之类的一些行为基本上它的配置是非常灵活的然后一个是Cock第二个组件是Cock Controller它是一个命令行工具它的话主要就是把Cock的核心组件以及跟Kubelet的控制面组件组合起来然后把它做成一个类似CAN的一样它可以一键启动一个集群就可以跟CAN的一样直接Create集群和Delete集群非常方便然后的话介绍一下核心组件Cock它是一个大个的原理原生的Kubelet的话它是每一个节点它上面会起一个Node去模拟一个会起一个Kubelet去模拟一个Node但是Cock的话它不一样它只是一个简单的控制器它只需要连接上APS2它就可以往APS2图大量的你自己任意想要的Node然后的话Cock Control的话它是一个命令行工具它可以用任意的运行时比如说是Banarray或者是Docca,Contentadia,Polderman任意你想要的容积运行时然后基于他们我会去组合各个依赖的组件然后把它传成一个集群然后把它起起来然后的话基本上它的启动也是非常迅速的这里是一个视频演示一下Cock Control的一个使用它的命令基本上跟Candace保持一致的基本上你可以看到可以在1秒钟内起一个集群就一个叫Demo的集群这边是然后我们创建一个Node这边Node的资源的话就是任意的Node资源就是你甚至可以在现有集群里把现存的Nodeget下来play进去也是没问题的然后大家可以看到这边不是有一个dvplay可以看到Node所有Polder就瞬间全部启动了它这个行为也是可以自己定义的然后的话为什么去使用它呢Cock的话它大概会涉及到三个场景一个就是Morke数据因为Cock完全是虚拟你的我可以再继续你Morke任意你想要的数据要看它的测试就比如说比如说你可能自己开发的一些Controller它会有些边缘场景它可能用正常的途径是非常难测试到的就像我一开始提到就比如说某一个Node或者Polder它不停在ready和not ready之间反复来切换这是一种场景如果你正常要磨你这种场景的话是非常麻烦的如果用Cock的话你可以直接用一份配置可以直接把它实现这种边缘场景的模拟以及压侧压侧的话它大概会我预计的是也是大概三个就是一些它那就比如说AEPS2AEPS2本身的压侧以及4Gal的压侧以及大家开发的自己开发的CRDController的压侧然后的话mock数据它其实有两个用途一个就是就比如说你们开发的一个云管平台你可能要支撑下你就比如说要出去demo的时候你可能没有这么多的节点让你去把你的云管平台的界面给撑起来这时候如果用上Cock的话你可以你随便一个笔记本你就可以起一个云管平台里面有几百上千个节点然后可以非常方便的做一些演示然后的话Cock它其实的话对标的是一个couple mark这个产品这个的话是K8内置的一个组件它一开始它的核心其实是基于couple light然后把运行室那一层给抽掉然后但是它的行为是跟couple light一模一样的它只不过是不运行容器但是Cock的话它的Cock的目标并不是完全兼容couple light它只是尽量做跟couple light一样的事情但它会为了性能啊一些考虑会跟couple light原生做的一些事也会有点不一样然后的话couple mark的话它是跟couple light一样你每个note都需要有一个进程去维持并且的话couple light的消耗的内存也是跟couple light是差不多的但Cock的话基本上是维持多少破的note其实couple这边其实都不会存多少数据它内存消耗是非常低的并且couple的话破的和note的行为完全可以定制就可以你任意想让它怎么做就就怎么做然后couple mark的话它可能就不能实现并且即用性的话couple也是非常方便的可以用一份压谋或者一个命令行直接去创建一个这样的事情然后的话couple mark的话你需要去自己去编译去修改一些固定制然后的话couple我一看是它是用场景的话基本上就是我预期的就是一些超大规模的集权的压测以及调度这种纯控制面的一些场景couple mark的话有couple之后couple mark最终的一些它可能最终会偏向一些VIPI层面兼容性或者小规模的压测它还是能升任的最后下面是最底部下的字就是couple我自己测过来的话是不管node和port的话它自身的内存消耗都是小100兆的但是couple mark的话它一个节点的话模拟就要60兆了比如说我要模拟一个满节点的K8技权的话就是300技就是差距还是非常大的然后的话它也有一些局限性因为它是模拟的一个空击它由于是模拟的一个集群它说是couple尽量只只是尽量去模拟正式情况但是它行为并不是完全相同它还是跟真实的行为会有一点点差异而且couple的话它并不能替代couple light的测试因为它实际上并不是一个真的集群然后怎么去使用couple呢我这边是分享了几个案例一个是这是社区的另外一个项目就是couple schedule simulator这个项目它是一个做调度可实化的组件它原本的话也是在内存里做的一个跟couple有点类似的东西但是后来的话他们解释期望去签一道couple然后他们就不需要管这些集群模拟相关的事情这是一个方向另外的话也是社区的项目是一个e2e的测试框架他们原先的话也是只集成了can的后续的话后续也是有计划把couple集成到他们e2e测试的框架里面来然后大家就可以非常方便的从couple去启动一个e2e测试然后的话这位是Eastel的top 1 contributor也是Eastel的主要的owner吧他也有计划在Eastel里面在Eastel的压侧工具里面引入可可去做一个对Eastel控制面的做一个压侧这个的话是日本的一个IBM工程师吧他也是联系我他们是在做一个多网卡CNI的一个组件吧然后他们是引入了可可作为他们控制面的一个测试的组件也是集成在e2e里面然后这位的话是腾讯的一个在腾讯云的一个工程师他们是尝试也是用可可做的他们云平台的一个调度压侧那个场景然后的话这是前面是可可的stack channel以及他的rape以及文档如果是国内用户你加一下微信我的内容就这么做大家有什么问题吗感谢张老师的那个精彩分享