大家下午好我是来自蚂蚁金服的张勇然后我给大家带来的这个议题的话是有效并且可靠的管理达最模K8S机器首先简单介绍一下我自己然后我是来自于蚂蚁金服然后启动部的张勇在内部的话我划名是苍莫然后我在蚂蚁的话主要负责蚂蚁的还有他现在的就是K8S机群的自动换用为系统的设计和研发然后我们接下来的这个分享里面的话我会从这几块来介绍一下我们的工作首先第一部分的话我会给大家介绍一下蚂蚁当前的这个机群的现状然后和我们做这一套管理系统的一个动性或者说是我们一个目标然后接着的话我会给大家去详细的去介绍详细的介绍一下我们这个这个这套管理系统他的一些设计思路其实也是说我们在这个设计的过程中一些设计原则然后更进一步的话我们会详细的去介绍我们这个设计系统这个管理系统的各个模块帮那个分工和他的设计直线最后一部分的话会有一个QA环节然后在我接下来的分享里面的话大家如果有任何的问题的话我们可以在最后一个环节来提问在正式开始之前想和大家做一个简单的一个小调查在做的话有就是创建过KBS地区或者说有相关的一些运萎和管理经验的同学大家可以举个手脑谢谢大家比我预期的要多很多所以大家肯定还是对这个这一块还是比较了解所以大家肯定都知道这个集讯运萎这个各种坑还有各种空间因为大家都做不做体会过所以这个的话也就是为什么我们要去做这样一套系统一个那我们就带大家来看看我们是怎么样在这个过程中去谈的这个坑一部分的话我想给大家看一下蚂蚁的当前那个背景现在KBS的话在蚂蚁的生产已经大规模使用大规模我们规模到底有多大呢目前的话我们在生产上面的话是有几十个PBS的选择然后集群的节点数量已经达到万几别这个规模的话说是这两个数字那么这两个数字带给我们的挑战是什么呢那么首先它是一个分布日系统那么集群这个分布日系统的话我们知道各种移植性问题还有说比如说节点了一些顾掌顾掌的话或者说硬件顾掌也是很开发生的我们在这个集群的设计之初就应该是变相失败的设计了那这个的话其实就是一个很直观的一个规模打来的问题那么另外的话就是我们在这个集群上面蚂蚁的核心业物全部都已经打上去了已经达到了几十万个获了这样一个级别并且有几万个状态在上面再刨那么核心业物跑上去之后那对我们平台的稳定性要求也提出了非常大的一个考验所以在我们这个设计的时候的话我们这个管理系统必须要高考的高考用我们的集群必须要高考高考好然后在蚂蚁这样的一个大的体量之下这个每一个数据中心有这么多节点其实它的那个造价或者说它的代价是非常大了那么之前的话说是降低成分我们首先会考虑到的是我在调度层面上去解决那其实在这么大规模的这个场景之下呢已经不仅仅是调度要去解决了那我们需要保证我们在这么多节点上集群的那个可调度的节点必须要达到很高的这个再相率如果说你集群里面某个节点故障它没有办法及时的去恢复那么它其实是自愿在浪费的那其实它就是一种远的形式这个的话就是我们满意当前遇到了这个规模的这个问题让我们要做什么首先第一部分的话我们是要去把我们管理这个集群的这些集群的生命周期让它自动化起来比如说我们的创建集群销毁集群的升级然后节点的一些突破这一部分的需求我理解它是一个钢琴就是一个钢琴需求因为我们每一个接触到KBS的必须要去把这个问题给自动化解决不然是一件非常痛苦的事情然后第二个事情的话是我们需要在这个集群里面向失败去设计然后要做到这个节点的故障资议这一部分的话我并以为提升幸福感的事情因为集群的话每一天每一天的话都会有很多的节点和失败就是会出现硬件故障甚至说我们的一些KBS相关的一些组建的无遗伤那这个的话不可能说让我们人工然后继续去修复它所以我们必须要能做到节点的故障资议然后第三点的话其实是变更可控前面也有提到迈金服务是一家金融公司我们的银台的可用性已经说我们的变更对付的影响必须要是可控的这个的话是我并埋了一点我们所有的运为操作必须要安全存好那么这个的话其实说是我们在设计这个系统说这个出发点我们要达到的目标然后介绍到这个地方的话其实我们已经知道了我们现在面临的问题是什么以及我们要达到的目标是什么那么接下来我们该怎么做首先在介绍我们具体做的工作之前我给大家介绍一下我们在这个里面设计的一些或者说技术全形的一些思考第一个部分的话就是我们传统的有很多的运为系统什么都是命令式的其实这个地方说命令式并不是说命令式不好就说简单介绍一下命令式就不能就说我们任何的一个操作都一定要指令都是一条命令去执行的所以我们会经常说是运为操作其实这个东西就类似一个操作它要去实现的是什么呢就说我们集群当前是有一个状态然后我现在就过一个变灯然后我会去告诉它我的集群这个变灯之后它会是达到什么状态不仅如此我还要告诉它你第一步做什么然后第二步做什么就是这样它总结起来的话它会去干涉到你那个系统的设计它不仅告诉你我的结果是什么而且我还要告诉你我该怎么做这样的一个问题就是说首先它第一点它没有办法是说保证到我们这个系统在这个设计过程中如果出所错过了该怎么处理一旦在这样的设计模式之上我们就把这个都够进去的话那么它这个操作的过程中的分支就会特别多然后第二点呢它其实就是说我们一旦说未来我们的系统案发生眼镜或者说我们的那个底层的技术设计发生变灯了之后才能够模式我们这些徒手之间是不是就有非常非常强的管理那么用户的话它已经记录到你的技术说是实现了所以在这种方式的话在我们后面的这种设计的话其实是不好了然后我们来看一下我们现在选情使用的这个声明式然后声明式其实就是K8S提倡的这个比如说现在有些声明上面的一些概念比如说我们的话首先会去用户呢只会去定义与这个机群的中台是什么它并不K8S你怎么去把这个状态发生变灯的然后呢整个的这个实现的话是放在这个Ctrl的里面当诱惑指定一个中台之后然后呢很多的它会去实际去比对机型当前的状态和你指定的中台之间是有什么样的地方然后呢它就做执行相应的变灯然后让这个当前的状态去于中台然后呢这个跟我们日常呢其实我举个例子就像我们现在是之前的话就会很多敲很多的命令那我认为这个的话可能就是是吗这个命令式的那你看我们现在写的盒色口其实它并没有说我这个色口我只描述了我需要什么样的数据这个数据买到那些约束条件但是它并没有说你怎么样从数据�里面把那个数据也抓出来然后怎么样去有效高耗高效的去把这个数据抓出来呢是由我们数据工的执行引擎去实现的所以我在这个地方的话就是说我们的采用证明是其实就是这个的这一点就是说用户它只要去关注这个状态的变灯然后怎么样去发生状态变灯这个执行引擎是由我们来设计这样的话可以大大的去降低用户去使用这个平台不此之外的话就是前面提到我们要去做服装自愈那其实我们之前经常会去拿这样的一个比方去比比喻我们那个我们的线上的这个生产系统我们会说我们的生产系统是一架持续飞行的飞机然后呢如果拿这个做比语的话我们是希望我们这个飞机在遇到这个气流颠簸的时候能自动的调整自己的背影姿态然后平稳的过去那么对应到我们这个系统里面所以其实我们的集群然后呢这个干扰就是气流干扰这些东西呢其实对应其实对应到的其实就是我们比如说网络的问题我们的硬件污染我们的组建的组建的异常甚至说我们的一个发海都可以然后我们需要做的一个事情就是持续的去监测我们的集群持续的去监测集群并且我们需要是设计一个控制器能够去保证到任何的这个状态的不一致我们都能把它修复掉然后保证我们就会集群得到特别这个的话其实就是这个这样的话这样一张图呢其实是在我们那个控制理论里面的一个副盘会的一个闭环的控制系统然后我们不仅是说我们在整个系统的图面上是这样的一个闭环我们在每一个组建每一个小的磨块里面我们都限制这样的一个设计思路最终我们实现的就是说任何的一个小的磨块它都是闭环的然后每一个很小的闭环的系统然后在上面再够的一个闭环就是一个多闭环的这样的一个一槽管控系统讲完这个之后我们来聚集看一下我们现在有哪些事情有哪些磨块第一部分的话是我们的一个class operator这个的话其实我们组同学去年的话有在互传上有分享过然后的话这个我简单介绍一下就是我们现在满意的几十个这样的集群的话会定当就是互联的所有的这个业务集群然后业务集群的这个创建它的生命周期的话我们只有一个元级集群里的我们的这个class operator其实就附属在元级群里面然后呢它也是通过一个classer CRD的这样一个模式每一个业务集群都会对应到一个classer CRD然后它这一套发案的话其实很多公司包括开源上面都会用这种方式发案的话其实叫就是算是大家摸索出来的一个比较成熟的一个发案然后呢它其实在这个里面的话也是通过class operator去watch CRD然后比较业务集群的实际状态如果发生互联制然后就让它们去做一些变更和做一些Axis让他们去达到中南大概是这样的一个东西然后今年的话我们主要的工作是在节点这一块所以下面我会重点介绍节点这块的工作节点这块的话我们取的名字叫Machine Operator因为我们的一个节点就会对应到一个Machine这样一个接纳地然后节点上面我们要做哪些事情第一部分的话我们是会要去管理节点上面最底层的像OS然后Google Patch这些东西第二部分的话我们要去管理上面的KBS相关或者容器相关的一些相关Google App这些东西的组件的安装然后第三点的话就是刚才我们也简单提到了一个就是我们其实是一波多一环的这样一个控制系统那么我们需要去写一下每一个地盘上间的关系然后让这个节点是一个最终的一个中台第四部分我们会重点去介绍一下第四点它就主要就是说我们怎么样去实现这个节点的这个控制我们来看一下是怎样的这个是我们定义的一个游戏的一个家里这个可能会比较细的大概的话就可以看到就是在游戏上面我们是描述的这个节点So you can see on the machine we've described every knotthe metadatathe core is that in that we've describedall the versions of the componentsinstalled on the knotfor every version it refers to a version managementand then in this version it will describehow this component should be storedwhat it's from configurationand what these two it can effectivelyto reduce the machine's CRD sizeso when you edit it or you read itit's more convenientand also at the machine statuswe have a general statuswhen this space is runningit means that our knot is normalcan be caughtand also the other is ready to escapethis means that on this knotall the small enclosed cycleswhen all the status are normalthis defines the node to be normal as well下面的话我们就中研介绍一下so next I willjust introduce thenot final state managementwhy we have this kind of needbut as we said at the beginningthe need is simplewe just put some packagesthen we found that we hadlarger and larger clusterwith larger and larger needfor example on this knotI will run a demo sendto collect the logsor I have to runanother componentto maybe toconfigure it in environmentsowherehow can we dodo we have to expand the machineand to write the logicinto machine operatorwe didn't do thatbecause we followthe linux design philosophyyou think the machineonly need to do one thingso we putall the other thingsand put them in different controllersfor exampleif it's responsiblefor configuring certain componentsbut at thisyou can see there's a needbecause for this componentI need tofinish the configurationbefore you start to call itor before your deploymentso what we dofor every componentwill bewe use configure mapso for every elementit will correspondto a configure mapif it reaches a final statethen I will write downthis component is ok在這個地方andalsoyou can seewhat configuration I should putthere is a priority levelfor here I will saythat on this nodeI have to configure ademonset for log collectionso the machine will knowthat it will readthe status in a configure mapand then synchronize iton its own statusand it willto see if it isreadyif it is readythen it will look on this nodesoand there will be no kind of scheduleon itso through this decoupling processso controller is only responsiblefor one thingand with the minimum costand the machinecorporate with the machine controllerandandin terms of thought self recoveryyou can seewhat kind of failureone is hardware failurelet's saywith physical machineswe could havepower failurehard disk failureeven the motherboardcould have issuesso these hardware failuresthe second iscomponent failurefor examplewe could have software bugsso we will have componentcrash or componentpanic or we could haverun configurationthe third is resource endlet's sayif my machine is okbut I could haveexceptionalloadit's efficient storageor insufficientdisk spaceso these are allfailures that need to berecoveredso for these three types offailuresof course we have to discoverin terms of failure discoverythis is what we doso for all thefailuresand we will sendan incident centerand this incident centerdoes not only collectthese failuresin anti financeand in incident centerthere is a lot ofincidence registrationyou can see itas like a midwayfor incidentsso we just enable itand the firstthe first step is thatthere is ntpmpd moduleand we do someinforcements on the moduleso it does not only scanfor mail functionsbut it will also probeand monitor whetherthe components are operatingnormallyso it will do like health checkfor every componentsoso this kind of testing modelwe call itagent methodbut agent could go downas wellso what we dowethere is an activevoluntary monitorfor probeso we can use thisto probe for anissues it's a remote accessit's like a remote accesson top of itwe also haveif there is some failurewe cannot actively probefor itwith such a large cluster scalesometimes it's stillquite difficult tofind themail functionsif the bugresult in the system humwe can doreport manuallyonce this mail functionis reportedthen our operatorsfor the self or recoverywill process and fix it然后我们的处理的话因为这个上去之后呢and financeonce our scale is upwe have a lot of applicationsthat we need torenovatebecause we arelegacy systemso in this processwe did a lot ofcompatibility workto make sure that the older onescan be compatible with the newsetso the first what we do iswe didn't adaptcommunitiesto drain the nodewe put it on the tentand second is thatwe also put someflagon hodsomake usso thehouse at the operation levelwill migrate these flagto hodand then然后我们会根据那个维修的互装的类型when we started maintenancewe will initiate differentmaintenance processi listed someprocess for hardwaresome for softwaremaybe for hardwareand we will have to replacethe demail functionthe module on the machineand also re-install the systemetcand for the component failurewe also havesome processlike some componentbecause of memory issuesso we willre-bootthe componentwhich is not listed herein the future we will alsouse some cloud resourcesandit will be not something like thiswe will create a VMfor online services or cloud servicessobut basicallythe process will remain the same然后围决完成的接点and once wefinishonce we finishwe will start the schedulingsowe talk about the design of the modulesbut they are all single notso how can wetrust its reliability我们是I think thatI think that there is thea risk prevention issuethat we have to think aboutsoI also want to say thatfor any type ofdistributed clusterespecially every nodewe couldwhen we initiateoperation and maintenance changeall of ouroperatorsall the pointsthat initiate this changeshould make inquiryto risk prevention centerto our risk evaluation centerthe risk evaluation centerwill evaluatethe inquiry and denysome of the inquiriesand sometimes we alsodo latencyterminationon certain clusterfor example we can say thatthis functionthe malfunction ratio is likewhat whatif somedaywhen wethere is a bug with the male function issuethey found thatall of your nodes is male functionsodoes that mean that it could kill all the podon the end financeno because all ofour inquiries will enterthe risk evaluation centerand this module was like the lastdefenderand for risk assessmentthis is only an illustrationthe source of itsevaluationis likeour incident centerour monitoring centerand they will usecurrent restrictionthis policyto finish the risk assessmentthat's all for mysharingyou can scanmy wechatto contact meso it cannot meetall the needsandifit cannotwe use stalker poshif you detectit'sinterface is connectedbusiness is connectedso we could run some directivesetcwe have also mentionedbecause the agent couldcrashso we will haveexternal inspectionand also we havehardware failurehardware failure is onidc lab and some arefence issues or power issuesso all the incidentswill be convergedsothe event centerare about your event centersowhen the clusters nodeand the podthey know their mail contract reportthen they send the event to the event centeryesso before you send the eventyou already know the rulesfor your mail functiontests inspectionso event centeris like a sequelor whatit's our selfit's a midwareit's a Kafkait's our self-developed midwarethank youso accordingwhat you said thatand finance is not runmajority of the business is not running on cloudrightit's not relevantto whether we run cloudor notlike in the sharingand also we also have serverlessyou can imagine how much we have on serverlessit's just an architector operation or maintenance modelit's not relevantit's irrelevantto whether we run it on cloudthe resources could beon cloud but the applicationis not cloud-nativeso you control your own machinesnoyou can check insideand financewe are using Ali cloudwe have our ownmachine roomsand we are alsoand sometimes we useAli cloudalso to increase our usingAli cloud to reduce our costduring W11首先我非常感谢你做的Planetation我现在大多数Planetation要稍微有一些干部好多东西I have more takeaways from your presentationpreparing to previous presentationthis morningbecause if you grab some sessionsthey are talking abouthow good their things areand they don't tell youhow you can achieve the wholeor something like thatsoyou mentioned the forcetestingyou do have a defined policylike the durationfor different fontsfor examplefor some fonts the duration is 10 minutesand for some fonts you havelike 42 minutes durationyes we havewe also havethe power sourceforso we cantolerate thatwe see the period of timeand we cantolerate this forceso we have a power in Cfor different kinds of fontsfor example memory fontswe have to repairimmediatelyit's your product open sourceso we can design modelsand prepare for the futureso we canfor exampleI introduce some ofthe care processmaybe it's notavailable for youbut for the fontfor fontscheckingor identifyingmaybe you canlearn somethingfor the fontfor the fontfor includingwe aredoing the auto healingI think it'sthe same asthe font self recoveryimentionier presentationwe open source the auto healerand we have built itin the open stackload providerjust as所以这可以帮助你认识其中的状态对这种不感兴趣的话现在车区我们也在揣摩这种你可以用刚才提到的MPD加另外还有一只还有一只Altrino它是 also open resource tools我看这个discounting里面其他当然你这个setting里面就是用Auto Scaler加上Auto Scaler在你这个Node认识掉之后它就变成空了So when you change the nodethe Auto Scaler can automatically kill this nodeThis is just for reference这种修复的方法看起来就很不感兴趣In the auto killing打个广告谢谢其实怎么说呢就说在这样一个分享的话其实主要还是可以去介绍一些So my presentation is for the purpose ofintroduce to you a like a new modelor a new thoughtto help you with your own system我去帮你提到的命令是You mentioned imperativemore than nuclearity or the非常直接一个命令的这种So you don't have like the commandfor the impacts or themeaning of course在这里面我认为这两个东西没有说就是粉丝的取决其实是某一个层次上面This is just a different levelSo your system does it support当然是可以说就是我们没有去做这个然后我们是有另外一个系统它是支持你通过一个一个中算可以到机器上面去排查问题的但是说我们是不允许通过那种就是那种途径它在机器上面就做点更因为这样的话是不可能的ChangeBecause it's not availableWhat about thebusiness on themAnd as managementThey are separated因为把你的那个就是容器容器的那套运维系统的话It's container on themBecause it's moderating to the new modelAnd our new one and modelIt's available然后我们现在是在做两件但是一件事情是说在完全KBIS上面去构建SVS这一套东西然后同时的话我们在做的事情所以我们原来的那个我们系统的维模式然后迁移到SVSSo that's the那一件是KASSo that's the这一块是有另外的系统So of course that'sSo that's在我们这个系统之上的话是构建了一个固定和套在一个KBIS一群And then construct a reliableand stable KAS master classAnd this will correspond to a PAS systemIt will help us to maintain the systemSo the rest of the questions的话其实就在那个So we'll see you in the next questionsAnd we'll see you in the next questions