摘要:今天为大家介绍的容器管理工具是数人云基于最新技术的一个开源项目。今天从技术角度分享一下数人云从设计到开发的实践之路。从控制面板说起数人云是一家开源技术的公司,最初希望做一个开源项目,相当于做了一次内部创新。数人云的技术栈是,正好与十分密切。
小数表示最近雾锁京城真是有些可怕,迷迷蒙蒙让人看不清远处,大家外出也要注意防霾哦!
容器管理面板Crane,是 数人云的第一个开源项目,那么它是如何诞生的,从设计理念到技术实现,大家是否也是一头雾水呢?数人云CTO肖德时在2016中国开源年会上的演讲将给你答案——
数人云从2014年开始创业,是一家技术为驱动的轻量级PaaS平台公司。今天为大家介绍的容器管理工具Crane是数人云基于最新Docker SwarmKit技术的一个开源项目。今天从技术角度分享一下数人云Crane从设计到开发的实践之路。
从控制面板说起数人云是一家开源技术的公司,最初希望做一个开源项目,相当于做了一次内部创新。数人云的技术栈是Golang,正好与Docker十分密切。始于开源技术,成长于开源技术,是数人云的最初开始。
纵观Docker相关的product,关于控制面板的部分是最主要的,同时也是最容易介入的。我们想通过这个开源项目探索Docker所有的构件,能够更快熟悉Docker的技术。因为理解Docker有两种方法,一种是看文档,另一种是写代码。作为一家创业公司,写代码必然是最方便最快速的方式。我们想做一个与Docker UCP界面一模一样的工具,于是就有了Crane的诞生。
Docker的现状目前容器还未达到企业集群的程度,虽然我们提供的是企业的服务,但是这个核心技术Docker本身没有达到企业集群,这是其一。第二,容器技术内在的需求是因为DevOps的需求非常迫切,大家希望能够变革IT的infrastructure方法。什么是DevOps?简单来说,就是开发变成运维、运维变成开发,但实际上它们需要一个媒介,而Docker的出现正好切入这个点。大家都以为找到了一个救星,但其实它只是一个工具,一个引爆点,并不能解决所有的问题,所以我认为现阶段仍是云计算浪潮的初始阶段。
第三,对于原来VM的管理,大家都知道有非常成熟的Openstack,有AWS 的IaaS 实现作为模板,大家也都了解企业级的集群如何管理,但是一旦把颗粒度变得更细,一台机器可以跑几百个容器,把它们当成VM,这样一个超大规模的集群如何管理?它的安全指标不像以前那么可用,企业级的集群管理在容器方面是没有标准的,这就是我们面临的现状。
Crane设计过程-定义功能集Crane是一个新的项目,在开发Crane的时候需要自己定义功能,提前设定好目标才能成功,这也是项目刚启动时的一个技巧。从给它定义来看,我们的想法很多,除了应用编排、日志监控、网络管理这三大块,还有插件的管理,一些辅助信息、Docker本身对主机的管理也加进去了。但是我们重点关注了其中最核心的功能,就是应用编排、日志监控、网络管理,这是DevOps最关心的三个点,也是该项目的亮点。
具体到应用编排如何设置,它一定是rolling update,比如资源分配, 是可以在配置里面配置的;它能做ACL的隔离,更酷的是它能扩缩,并且是无痛的,这些都是非常智能的功能,也是在容器编排里面非常容易做到的事情。再加上SSH,因为它并不是一台主机,所以现在利用的技术叫web shell,即在web界面让你能够打开一个shell,能模拟的SSH的登录界面。
除了跑的任务之外,还有一些批处理的任务,可以把它想象成就是一个VM,机器里面不会想着要跑一些Cron Job之类。把这些功能实现以后,利用Docker的API把它的统计信息还有日志导出来。最后,把tasks的历史信息存在DB里面并显示出来。这就是Crane的全部设计。
Crane设计的实现那接下来如何实现?通常开源分为两个级别:如果时间比较充足,就可以从第一行代码开始做起;另一种方法是基于成熟的开源项目,学习它的代码,开源项目鼓励大家这么做,它的license free&open,帮助大家互相创新。数人云也是基于开源技术,Docker功能里面有一个DAB,它发布了一个叫分布式的Distributed Application Bundle,把一个应用拆成很多小模块,简单来说就是一个web一个DB。复杂来说,还要加一个Reddis 作为Cache 层。一般发布的时候都是一步一步发,它用一个DSL的文件,是一个Jason,就可以直接用一个API发下去,并保证它的编排,刚才说的功能都可以实现。
它把 DAB 的实现放在了Docker Client端逻辑里面,Crane是开源项目,它的媒介、它的界面是web界面,是我们写的一个后端,所以我把它命令行端的实现代码直接merge到Crane的界面里面,这样就有了一部分创新,即能让用户能够通过界面发这个代码,能够发布应用。
第二件事是命令行,写完API工具以后,需要一个命令行工具来管理界面,用Python写一个脚本,然后调用API。它可以帮助开发者很快地通过界面就能够去操纵Crane,然后再操作集群。
开发一个project的时候,它的功能会越来越多,最理想的办法是插件化,你编写的代码应该是一个目录或者module,里面有自己的interface,把它注入进去以后,就可以与你的主线代码交互。更直白一点,我们原来写的一批API代码,API的RestfulAPI,想扩展这个API,可以在原来代码基础上继续写,但是这个方式与原来是紧密的耦合。所以我们用Golang interface的方式注入,注入完以后,就可以实现想要的认证,想要的registry,我们想要的各种其它的功能也都可以注入,这种方法在Golang里面非常方便,通过plugin tag的方式在Golang ini的时候就可以load,保证想要什么功能都可以加上。后台其实只实现了少有的功能,即集群管理、日志、监控、编排,其它比如数据库、Docker的应用目录、账号、信息这些都是通过扩展的方式实现的。
Crane还是一个很小的project,所以我们也非常谨慎地引入第三方的组件。回归本质,我们写这个project不是为了去做一件change the world的事情,而是遵从本心,想利用这个项目来学习Docker,学习Docker的东西是如何实现的,它的API是如何调用的,这是数人云Crane项目的本质。这个项目的目的是为了推广或者让更多的开发者能够学习到Docker的特性,然后直接参与到这个项目中来。
Crane的路线图任何一个开源项目都有自己的roadmap,如果不做roadmap,那就是一个个人项目,而数人云要做一个至少是标准的开源项目。经过一个月的时间,Crane目前是四百个星,也在持续地增加。虽然这个项目本身的核心技术并不是特别高,但是这个项目的标准化程度以及它的代码质量都是有保证的,我们为此也写了很多unit test。
对于Crane的未来,我们会对事件流做一个补充,日志、存储方面也会实现。因为Docker本身是是无状态的应用,所以存储这一块非常方便。Docker本身是plugin机制,它可以装一些存储的插件,比如Flocker。
长远来说,Crane因为是一个开源项目,所以我们也避免跟其它项目同质化。虽然大家都认为控制面板很好做,但每个人的方向不一样,Crane这个开源的项目没有商业利益,它主要的目的是为了推广Docker的技术,让开发者在学习中成长。
总结总结一下,再小的一个开源项目也是要投入的,在两个月周期内,我们投入了开发相当多的时间。也希望大家关注这个开源项目,上图是Crane的界面,大家可以去看看,非常简单在本地就可以搭建。今天分享就到这儿,谢谢大家。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26746.html
摘要:更多技术栈的包容数人云技术团队为了帮助广大技术爱好者对新版本有快速直观的感受,制作了一款基于最新特性的容器管理工具,具备一定容器开发经验的开发者可以通过它在第一时间体验的新特性。可以说,数人云是在技术能否持续下去的争论中发布的工具。 showImg(https://segmentfault.com/img/bVD5g2?w=900&h=500);中秋节前, 数人云技术团队推出了一...
摘要:爱奇艺历程采用的软件栈服务现状集群建设自动化部署经验没有采用嵌入式管理服务降低风险,对红帽有一点担忧。再次感谢和数人科技共同组织的,非常期待下一次的周末相聚。 周末两天都是大雾霾天,作为运营也不能在家宅,告别了技术就得腿儿勤点儿。 非常感谢 Linker 的 Sam Chen 和 数人科技 的 CTO 共同组织的Mesos Meetup,OneAPM 最帅的 Docker 工程狮~陈亮...
摘要:年肖德时先生加入,担任内部工作组。老肖语录是肖德时先生推出的个人公众号栏目,他利用这个公众号记录自己创业路上的点点滴滴,不时会有精彩的技术感悟与分享,欢迎大家关注。 我今天看到一篇网友分享的 php 环境下的Docker持续集成案例。笔者大胆的试用后尝到了容器技术的甜头,也在文中提出了一个没有解决的困惑。 原来他是把代码放在容器外面,通过挂载目录的方法把代码加到容器里面运行的。这样虽然...
摘要:指导员明伯伯数人云工程师手记相关阅读基于的集群管理开发实践服务发现,负载均衡和 这是一个容器信息臃肿的时代。 Docker 鲸鱼鼓着圆圆的肚子在西雅图开了一场名为 DockerCon2016 的大会,全球 4000 人参加, 8 大看点留下对容器生态的更多畅想。 数人云一直专注于以企业级的 Mesos +容器技术栈,出于对容器新技术的热爱,我们在社区版的工具上小试牛刀,距 Docker...
阅读 3407·2021-09-22 16:00
阅读 3451·2021-09-07 10:26
阅读 2987·2019-08-30 15:55
阅读 2858·2019-08-30 13:48
阅读 1366·2019-08-30 12:58
阅读 2160·2019-08-30 11:15
阅读 943·2019-08-30 11:08
阅读 523·2019-08-29 18:41