OKこんにちは你好Hello everyoneI'm Hiroki and here's ChenThank you for coming this sessionWe are going to talk about how tomanage hundreds of clusters inYafu Japan CorporationIn this session, our presentationin English and he translatesto Chinese大家好我是盛田廣樹今天今天我们将会跟大家一块分享我们在Yafu日本集团内部如何管理数百个集群在这个课程里他将会用英文发表然后由我来给大家发行成中文因为日本的那个英文可能大家听的有点费劲This is agendaFirst, we will explain aboutYafu Japan CorporationThen we will introduce Kubernetes as a servicewhich is a mechanism tomanage many clustersAnd contentsWe will explain how to manage clustersthe system's main featuresand plant new functionsLast, we will summarize this这个是我们的会议大纲首先我将会为大家介绍Yafu日本公司之后我将为大家介绍我们自己研发的KubernetesYafu Japan Corporation是一个人家管理集群的机制我们的系统将如何管理集群这个系统的特性和将来的计划最后我们将会为大家做一下总结What's about us?My name is Rihiro KikustaI'm a site reliability engineerYafu Japan Corporation's Kubernetes cluster management teamI've studied about Kubernetes for two yearsand I got GKE and GKD下面有我来给大家介绍一下我们我叫盛天广书这位叫盛天广书他在Yafu日本公司的Kubernetes管理集群内部担任CRE的职位他已经学习Kubernetes相关的知识有两年的时间了在这期间盛天广书同学取得了CK和CKD这两项资格He is my partner, Chan ChanHe is my teacher about Kubernetes and ChineseHe was the Yafu Japan Corporation's engineer tooBut now, not only Yafu JapanHe is reading Japan's cognitive text我实际上是盛天广书的伙伴然后我其实是他介绍我是他的Kubernetes和中文的老师然后我之前在Yafu Japan Corporation我是他的Kubernetes和中文的老师然后我之前其实也是工作于日本Yafu的Yafu日本的一个员工然后但是当然他给我介绍有点受众的经验他说我现在不光是在Yafu日本也在领导日本的云云原生的技术的提高谢谢OK, about Yafu Japan CorporationYafu Japan CorporationYafu Japan Corporation是那么多的优秀例如, search engineOption Shopping Email MapPayPayPayPay is Japan's payment serviceIt's similar to Alipay and retail payYafu Japan Corporation关于亚虎日本,亚虎日本为日本提供了很多网络服务例如亚虎搜索,亚虎拍卖,亚虎购物,亚虎邮箱,亚虎电子书,还有佩佩这种电子支付佩佩是日本的支付软件,它有些像我们的支付宝,还有微信支付反正正如大家所见,在日本,亚虎日本贡献了很多很多的互联网产品有很多设备设备,亚虎日本贡献了很多很多的网络服务亚虎日本贡献了很多很多的网络服务,亚虎日本贡献了很多很多的网络服务亚虎日本贡献了很多很多的网络服务,亚虎日本贡献了很多很多的网络服务这些团队的管理和运为底层基础设施是非常没有效率的因此在亚虎日本就非常需要我们这样的一群运为团队是的,我们是亚虎日本贡献团队,我们的团队在亚虎日本贡献了很多很多的网络服务而并不是我们的网络服务,我们也支持使用亚虎日本贡献所以我们通常会保持教练,支持设备和运为底层基础设施我们是亚虎日本贡献基础的管理团队我们的团队是将管理以亚虎日本的几乎所有的亚虎日本贡献基础不仅仅是管理和运为亚虎日本贡献基础我们同样也为各个团队提供亚虎日本贡献的使用的帮助所以我们经常举办各式各样的亚虎日本贡献的学习课程为开发团队提供必要的支持而且我们会将亚虎日本贡献的基础跟公司内部的很多系统进行对接这是我们的团队的网络服务当然,我们要提供免费系统的管理而且我们还有很多工作要完成所以我们需要减少运为成本这时我们的团队的服务我们的工作合作我们还有很多的工作要完成所以我们就需要减少运为成本自动化运为就变得非常重要了而且基础运为需要高可用持续稳定的版本升级和消除系统的潜在漏洞很多问题是同样是重要我们非常重要的工作进行这些任务并支援企业企业我们认为练习的行动所以企业企业企业是发展的已经在产业企业企业企业企业企业两年之后为了让亚虎日本的服务稳定的运行我们系统化的对积勋管理库巴内西斯的服务软件就在这种情况下诞生了它已经稳定的在亚虎日本的集团内部已经稳定的运行了两年的时间了这就是主要的必须第一是练习管理系统练习管理系统是最重要的当然练习的行动会下降所以两个练习管理系统练习管理系统的练习系统是需要的我们认为一家服务软件因为亚虎日本的服务有很多服务他们需要很多的质量这种设计是非常保持的库巴内西斯的服务软件要满足以下几个要点第一要非常容易管理库巴内西斯集团这是最重要的除此之外有时候集团这个节点可能会停止工作所以为了要减少云为成本自动恢复节点就变得非常重要了除此之外亚虎日本有非常多的服务而且每个服务要求不同的底层服务设施所以我们就要为不同的团队提供独立的库巴内西斯集团现在我们为大家介绍一下库巴内西斯的工作形态首先请让我们看一下库巴内西斯特性库巴内西斯实际上是通过republicite和deployment进行管理炮的我们的库巴内西斯会参考这些资源库巴内西斯本身会参考这些资源管理炮的的版本和数量要回去帮库巴内西斯的库巴内西斯的工作形态但是管理炮的类似是车车它有很多的经济供应例如车车设计和车车设计以及控制库巴内西斯的控制亚虎日本集团的库巴内西斯也是参考了这个特性但是我们的管理对象从PoD变成了Machine这里用了自定义资源例如我们通过自定义的控制器控制Machine, MachineSight和MachineDeployment在亚虎日本集团库巴内西斯特性的车车是车车设计和车车设计的库巴内西斯特性的车车比较车车设计和车车设计比如车车设计和车车设计And custom controllers create requestsfor OpenStack API在亚虎日本集团内部我们通过OpenStack创建节点并让库巴内西斯集团进行在这些节点之上所以库巴内西斯的Service控制器会不断的访问OpenStack API比较节点状态和MachineSight和MachineDeployment这两种自定义资源之间的差异And then, as a service, we create one clusterThis is a cluster configurationOnly one service is deployed to hereCustom resources about machines are divided intoload balancer, master, ingress, ADCD, and nodesWe are calling as workerAnd they are automatically linked and createdby a custom controllerCoopernateSizeService创建一个集群这是一个集群的基本设定自定义资源会将迫得分类成乎的均衡器, master, ingress, ADCD, and worker这些组件会通过CoopernateSizeService控制器自动连接起来And there are two load balancersfor master and ingressoperator can access to master load balancerit's for internal accessand service users access to internetand ingress load balancerso it's for external access这里有两个附带均衡器供给master和ingress使用运为人员一般是通过master的附带均衡器访问APS server 管理集群所以它是对内部的一个附带均衡器然后服务的真正的使用者实际上是通过ingress的附带均衡器访问CoopernateSizeService的服务所以它是一个对外的附带均衡器OK, we experienced the main featuresfirst one of the main objectiveis reducing of management costeven if machines go downit will automatically detect and recover itand it's easy to updateit's important to apply new versionlike for partner with thisthis is achieved with no downtimebesides, it is convenient toCoopernateSizeService users toofor example, users can scale clusterswith only one command我们下面来介绍一下这些特性首先,一个重要的特性是减少运为成本甚至当接点死掉的时候控制器也会感知并且修复这个问题而且它会很方便去升级再有一个有问题有一个障碍去要被修复的时候可以快速的升级到一个新的版本CoopernateSizeService可以达到服务没有当机时间的这种滚动升级除此之外CoopernateSizeService也会为使用者提供极大的方便提供极大方便比如说用户想对集群进行拓展的时候只需要一行命连就可以了我们提供的CoopernateSize版本并没有被修改所以用户得到的也是最原生的CoopernateSize集群真正的可以做到快速提供的用户我们在亚湖日本集团内部如果CoopernateSize的最新版本包含有高威的安全补丁那么它将在24小时内被反映到可以提供给公司内部的所有的团队我们将会为大家后面进行这两个特性的介绍OKExplanation of automatic recoveryCoopernateSizeServiceRegularity check the cluster statusby pulling request to OpenStack APIand compare them on custom resources首先让我为大家介绍一下自动恢复CoopernateSizeService会通过OpenStack API不断的检查集群的状态并且和自定义资源进行比较Now this worker goes downThen CoopernateSizeService detectsdifference between custom resource specsand machine status by the pulling check现在一个Worker的节点失效了CoopernateSizeService将会感知到自定义资源和机器的状态的差异After the detectionCoopernateSizeServicerequest to create a new workerto the OpenStack API在感知到差异之后CoopernateSizeService将通过OpenStack API创建一个新的节点And OpenStack create a new workerAnd list of running machinesbecomes similar to the custom resourcesOpenStack创建一个新的节点之后实际上真正的机器集群的状态就跟自定义资源状态相符合了And the lastCoopernateSizeServicedelete the downed machineAnd this recovery is done在最后CoopernateSizeService将会删除那个失效节点然后完成恢复工作nextwe will introduce how to updateCoopernateSizeServicehas these custom resourcesclass version and machine deploymentand those are linkedcustom controllers make pulling checkof the resourcesnextwe will introduce how to upgradeCoopernateSizeService将会包含机群的相关信息自动控制器将会不断的获得当前资源状态比较资源状态的不同然后在这个图里面我们将资源被设定为CoopernateSize13的版本In these figuresthose resources are set as 1.30and machines is running as so就是刚才我们所说的把它设定成1.13的这个版本now we will show these clustersuplating to version 1.40first these clustersoperate updates the custom resourceabout cluster versionto 1.40operator only do thisafter all of the uplating processafter this operationis run by automatically现在我们将会演示机群升级到1.14版本的一个过程首先操作人员将CoopernateSize版本升级到1.14这之后其实就是没有然后了因为剩下的全都自动化了控制器将会自动完成所有的升级工作uplatinguplatingmachine deployment to 1.40after thismachines will be updatedby rolling platebecause the machine deployment specand these machine status are differentCoopernateSize service的控制器将会感知到版本需要升级而且将machine deployment的这个资源升级到1.14版本由于感知到机器版本和设定版本不同这个机群的节点将会被自动的滚动升级到1.14版本CoopernateSize service首先新版本的节点被创建当然所有的旧的节点也在运行当中vending ports in the machinefinish normallyand they are redeployed to another machine运行在新的节点之后被创建好检查并没有问题旧的节点将会被执行这个准人操作这个准人操作将会清空机器上的泡的然后这些被清空的泡的时间会被转移到新的节点上并被重新启动after the redeployingthe machine will be gracefully shut downand repeat these tasks在部署完成后这个旧的节点时间会被删除掉然后接下来控制器会重复不断这样的轮旋操作new machine is created新的机器被创建the one old machine is drained旧的机器被执行这个捺印和清空操作and the machine is dated然后旧的节点被删除createddraineddatednow the cluster version is done删除之后集权的版本升级最终完成了by this rolling updateupdate with no downtime is rewritesin the case of load balancer or ETCDthey are almost the same通过滚动升级实际上升级将不会影响到服务实现真正的无挡机时间的升级模式当然loading balancer和etcd也会通过同样的方式滚动升级by using such Kubernetes servicewe so reduce the cost of cluster managementnow our clusters are used by 100 servicesthere are 400 clustersand there are 4,000 machines通过使用CoupleNation Service我们节省了大量的集群管理成本现在我们管理的CoupleNation集群提供给了100个公资内部的服务这其中包括400个集群和4000个节点clusters is so manybut our team is very smallwe are only about 10 membersof course our job is not only managementwe provide many useful add-onslike prometheus, alert manager, log agent, and so onand we also check our cluster's vulnerabilitiesand update them如此之多的集群实际上只是由一个诗人的小团队进行维护的当然我们的工作不仅仅是运为CoupleNation的集群我们同时也会提供Permission and alert manager还有Log收集这样的有用的工具提供给用户而且我们会经常检查集群的健康安全漏洞并且修复他们ok, finally we talk aboutplanned new functionsabout more usefulwe are planning support state toolrealized direct server returnand high flexibility node specand direct server returnis setting around load lanceras shown in the right figureis a method to return the responseto user directorywithout load lancerit reduce the load of load lancerand improve the response speed最后我想聊聊我们的未来的计划我们计划支持StateFort还有这个访问请求指反和高柔软性节点其中访问请求指反是一个附载均衡器的改善正如右边图片所描述的一样用户通过附载均衡器访问服务之后但是在返回结果的时候其实不应固经过附载均衡器这样可以很大程度上节省附载均衡器的附载情况并且提高他的响应速度and about more securewe are planning to realizeautomatic check of docker imagescoordinated audit logsand container logswe will use for example FALCO关于安全方面我们计划实现自动容器进行检查还有Kubernetes的操作日制还有容器日制的收集我们也将会融合开源安全软件FALCO到我们的服务当中this is summarywe are managing over 400 clustersthey are easy to updatewe cover automaticallyand we kept securethose are realized byYahoo Japan Corporationand Kubernetes as a service最后总结一下我们管理了超过400个的我们管理了超过400个的Kubernetes集群而且可以做到轻松的升级再还恢复和安全修复这个就是Kubernetes这个就是Yahoo日本的Kubernetes as a service的服务thank you very much谢谢大家is there any questions我刚才听了你们这个演讲我主要关心你们两个feature我自己是做OpenStack我现在是OpenStack里面Magnum的PTA我们最近也做了Rolling Upgrade和Auto Healing这两个feature关于你们刚才提到的自动修复你们实际上有好多细节并没有提的比如说你们去PullingOversight的API去检测你这个节点是不是已经荡调了但实际上这个只是属于一个physical的就是一个物理的故障对吧就是你的虚机已经挂了说白了对吧你现在只是检测这个你有没有考虑说比如说你的cubulate挂了但是你的虚机本身你的host是OK的现在这个是怎么做的我用日语给他发言一下可以语书语书语书语书语书语书语书语书语书现在我正在集结Oversight Mac&Project我就是 FREE Wi-Fi最近我们也邀请了Auto Healing Feature但是以你的介绍我觉得你比较浪费你发现了分析的错误比如说你刚才说Cubinate has a service just pulling the oversight API to detect the failurebut for me it's most like just the hardware failureit's the working machine downbut how do you detect the failurefor example when the cubelete is downyeah這個Cubelete's down的方向I will pull in request and get resultlet me uselet me expation by Chinese就我能理解您的意思就是它底下有些細節比如說它一個機器 down了而且它Cubelete本身的周邊組件也得進行檢驗是這意思吧就是對Cubelete本身的進行house check您是這意思的實際上已經都是就是我們實際上在做這一套Cubelete's service的時候它不單單是對VM本身的一個檢驗其實VM本身的檢驗值說明OpenStack的Cubelete的影響當然在Cubelete本身出現問題的時候我也會對它進行一個自動的house check您是這做的這個細節問題我們可以想想看然後因為這個就是第一套產品目前還沒有開源那好吧I explain about how we check theCubelete's and its close source中文還是英文英文可以跟他說中文吧其實我比較關心您是SRE嘛其實我比較關心整個用Cubelete's做容器化部署的時候對應用來講它要對接很多的運位體系那麼我不清楚你們是重新去創造一個自己對容器的運位體系還是能跟原來的原來原有那些運位體系能夠對接那你們有沒有用CRD去跟原來的運位體系對接呢然後你們是怎麼去對接的謝謝那現在CRD有利用了以前在我們公司裡面在Yafu Japan裡面有不同的公司在Yafu Japan裡面有不同的公司有不同的公司有新的服務有新的服務Yafu Japan對對那我直接給你們回答了就是這樣子的剛才您的問題我再整理一下原來本身有一套運位系統如何跟新的系統進行對接我們實際上目前來說把這套運位系統分為了三個層面其實我覺得對各個公司其實挺重要的我們底下那層應該就是Cubelete's Service的開發團隊然後中間還有一層實際上就是真正對Cubelete本身的運位團隊然後它最上的一層實際上是跟各個團隊直接的團隊實際上我們把這個層級分清楚了之後就像剛才您說的如何跟原來的系統對接就是由最上頭這一層的CRE團隊來維護的就是它跟客戶關係維護的團隊那麼這個團隊它不會真正的去介入到用戶本身的他們的業務中間因為我們現在有些公司目前自己單獨成立一個Deep Ops這樣的組來幫助各個團隊做但是我們的做法就是一個自己的Deep Ops這麼一個職位它做一個窗口人員這個窗口人員來學習Cubelete's的知識然後他來去掌握Cubelete's的使用方法還有我們我們集團內部的Cubelete's一些規則比如我們不讓他使用Cubelete's System的一些資源他來學習這些規則然後我們把這些規則交給窗口人員之後窗口人員再把這個消息他來把我這個團隊內部怎麼使用Cubelete's換句話說原先的這些開發人員他還是不需要意識到我這個東西實際上是跑到Cubelete's之上而是由窗口人員把你現有的業務跟Cubelete's本身情形對接我覺得這是一個挺好的這麼一個工作方式我不知道能不能回答您的問題我只要英文問他還是您請問您可以介紹一下Post and Pre-Check您會做的進行進行所以您要確保工作方式在新版本上新版本好我們可以自動進行進行進行並不是沒有需要的進行進行如果沒有需要進行進行進行進行我們沒有意識到所有的進行進行進行進行進行進行您可以介紹一下我不清楚您可以介紹一下另一個方式您可以介紹一下您的問題我想說的是新版本新版把它挖掘我們的 business因為新版本不會很回應因為有種 APL然後有種 når這些所以新版本所以说是因为我之前我现在已经不在亚湖日本了所以有些具体的我不好直接做回答所以必须经过他们这个我跟他去我在重处一下您的问题您是不是我现在已经在亚湖日本了所以有些具体的我不好直接做回答所以必须经过他们这个我跟他去我再重处一下您的问题您是不是你是不是在亚湖日本的我现在已经在亚湖日本了您注意一下您的问题您是不是想确认一下就是关于跳版本升级或者版本升级的过程中我们怎么确认这个东西实际上是这样的就是Kubernetes这个它版本升级的时候它版本之间它会有一个兼容性但是你还是得需要去check因为你workload起没起来就说你不能够完全依赖于一个你不是你来handle的东西吗对吧对实际上是这样的是两个点一个是就是首先这个kubelet的component它组建在起没起来这个是肯定能组建的但是你说的detail resource这个解决方案呢我们实际上为什么是100个服务团队我们提供了400个机群就是我们给一个服务团队实际上是提供了三到四个机群的这三到四个机群分配分别是一个deployment的机群就是这个机群是用于检验的第二个就是平时测试的第二个机群是pre-production就是它的对挥度的模式第三个呢实际上就是一个就是我们是有两个有两个datacenter然后这两个datacenter分别有两个pre-production机群OK 我不知道这样的回答没回答您问题所以你是用挥度来做检验然后这都正式发布这种对 是的 Our time is overThank you好 谢谢