摘要:今天為大家介紹的容器管理工具是數(shù)人云基于最新技術(shù)的一個(gè)開源項(xiàng)目。今天從技術(shù)角度分享一下數(shù)人云從設(shè)計(jì)到開發(fā)的實(shí)踐之路。從控制面板說起數(shù)人云是一家開源技術(shù)的公司,最初希望做一個(gè)開源項(xiàng)目,相當(dāng)于做了一次內(nèi)部創(chuàng)新。數(shù)人云的技術(shù)棧是,正好與十分密切。
小數(shù)表示最近霧鎖京城真是有些可怕,迷迷蒙蒙讓人看不清遠(yuǎn)處,大家外出也要注意防霾哦!
容器管理面板Crane,是 數(shù)人云的第一個(gè)開源項(xiàng)目,那么它是如何誕生的,從設(shè)計(jì)理念到技術(shù)實(shí)現(xiàn),大家是否也是一頭霧水呢?數(shù)人云CTO肖德時(shí)在2016中國開源年會(huì)上的演講將給你答案——
數(shù)人云從2014年開始創(chuàng)業(yè),是一家技術(shù)為驅(qū)動(dòng)的輕量級(jí)PaaS平臺(tái)公司。今天為大家介紹的容器管理工具Crane是數(shù)人云基于最新Docker SwarmKit技術(shù)的一個(gè)開源項(xiàng)目。今天從技術(shù)角度分享一下數(shù)人云Crane從設(shè)計(jì)到開發(fā)的實(shí)踐之路。
從控制面板說起數(shù)人云是一家開源技術(shù)的公司,最初希望做一個(gè)開源項(xiàng)目,相當(dāng)于做了一次內(nèi)部創(chuàng)新。數(shù)人云的技術(shù)棧是Golang,正好與Docker十分密切。始于開源技術(shù),成長于開源技術(shù),是數(shù)人云的最初開始。
縱觀Docker相關(guān)的product,關(guān)于控制面板的部分是最主要的,同時(shí)也是最容易介入的。我們想通過這個(gè)開源項(xiàng)目探索Docker所有的構(gòu)件,能夠更快熟悉Docker的技術(shù)。因?yàn)槔斫釪ocker有兩種方法,一種是看文檔,另一種是寫代碼。作為一家創(chuàng)業(yè)公司,寫代碼必然是最方便最快速的方式。我們想做一個(gè)與Docker UCP界面一模一樣的工具,于是就有了Crane的誕生。
Docker的現(xiàn)狀目前容器還未達(dá)到企業(yè)集群的程度,雖然我們提供的是企業(yè)的服務(wù),但是這個(gè)核心技術(shù)Docker本身沒有達(dá)到企業(yè)集群,這是其一。第二,容器技術(shù)內(nèi)在的需求是因?yàn)镈evOps的需求非常迫切,大家希望能夠變革IT的infrastructure方法。什么是DevOps?簡單來說,就是開發(fā)變成運(yùn)維、運(yùn)維變成開發(fā),但實(shí)際上它們需要一個(gè)媒介,而Docker的出現(xiàn)正好切入這個(gè)點(diǎn)。大家都以為找到了一個(gè)救星,但其實(shí)它只是一個(gè)工具,一個(gè)引爆點(diǎn),并不能解決所有的問題,所以我認(rèn)為現(xiàn)階段仍是云計(jì)算浪潮的初始階段。
第三,對(duì)于原來VM的管理,大家都知道有非常成熟的Openstack,有AWS 的IaaS 實(shí)現(xiàn)作為模板,大家也都了解企業(yè)級(jí)的集群如何管理,但是一旦把顆粒度變得更細(xì),一臺(tái)機(jī)器可以跑幾百個(gè)容器,把它們當(dāng)成VM,這樣一個(gè)超大規(guī)模的集群如何管理?它的安全指標(biāo)不像以前那么可用,企業(yè)級(jí)的集群管理在容器方面是沒有標(biāo)準(zhǔn)的,這就是我們面臨的現(xiàn)狀。
Crane設(shè)計(jì)過程-定義功能集Crane是一個(gè)新的項(xiàng)目,在開發(fā)Crane的時(shí)候需要自己定義功能,提前設(shè)定好目標(biāo)才能成功,這也是項(xiàng)目剛啟動(dòng)時(shí)的一個(gè)技巧。從給它定義來看,我們的想法很多,除了應(yīng)用編排、日志監(jiān)控、網(wǎng)絡(luò)管理這三大塊,還有插件的管理,一些輔助信息、Docker本身對(duì)主機(jī)的管理也加進(jìn)去了。但是我們重點(diǎn)關(guān)注了其中最核心的功能,就是應(yīng)用編排、日志監(jiān)控、網(wǎng)絡(luò)管理,這是DevOps最關(guān)心的三個(gè)點(diǎn),也是該項(xiàng)目的亮點(diǎn)。
具體到應(yīng)用編排如何設(shè)置,它一定是rolling update,比如資源分配, 是可以在配置里面配置的;它能做ACL的隔離,更酷的是它能擴(kuò)縮,并且是無痛的,這些都是非常智能的功能,也是在容器編排里面非常容易做到的事情。再加上SSH,因?yàn)樗⒉皇且慌_(tái)主機(jī),所以現(xiàn)在利用的技術(shù)叫web shell,即在web界面讓你能夠打開一個(gè)shell,能模擬的SSH的登錄界面。
除了跑的任務(wù)之外,還有一些批處理的任務(wù),可以把它想象成就是一個(gè)VM,機(jī)器里面不會(huì)想著要跑一些Cron Job之類。把這些功能實(shí)現(xiàn)以后,利用Docker的API把它的統(tǒng)計(jì)信息還有日志導(dǎo)出來。最后,把tasks的歷史信息存在DB里面并顯示出來。這就是Crane的全部設(shè)計(jì)。
Crane設(shè)計(jì)的實(shí)現(xiàn)那接下來如何實(shí)現(xiàn)?通常開源分為兩個(gè)級(jí)別:如果時(shí)間比較充足,就可以從第一行代碼開始做起;另一種方法是基于成熟的開源項(xiàng)目,學(xué)習(xí)它的代碼,開源項(xiàng)目鼓勵(lì)大家這么做,它的license free&open,幫助大家互相創(chuàng)新。數(shù)人云也是基于開源技術(shù),Docker功能里面有一個(gè)DAB,它發(fā)布了一個(gè)叫分布式的Distributed Application Bundle,把一個(gè)應(yīng)用拆成很多小模塊,簡單來說就是一個(gè)web一個(gè)DB。復(fù)雜來說,還要加一個(gè)Reddis 作為Cache 層。一般發(fā)布的時(shí)候都是一步一步發(fā),它用一個(gè)DSL的文件,是一個(gè)Jason,就可以直接用一個(gè)API發(fā)下去,并保證它的編排,剛才說的功能都可以實(shí)現(xiàn)。
它把 DAB 的實(shí)現(xiàn)放在了Docker Client端邏輯里面,Crane是開源項(xiàng)目,它的媒介、它的界面是web界面,是我們寫的一個(gè)后端,所以我把它命令行端的實(shí)現(xiàn)代碼直接merge到Crane的界面里面,這樣就有了一部分創(chuàng)新,即能讓用戶能夠通過界面發(fā)這個(gè)代碼,能夠發(fā)布應(yīng)用。
第二件事是命令行,寫完API工具以后,需要一個(gè)命令行工具來管理界面,用Python寫一個(gè)腳本,然后調(diào)用API。它可以幫助開發(fā)者很快地通過界面就能夠去操縱Crane,然后再操作集群。
開發(fā)一個(gè)project的時(shí)候,它的功能會(huì)越來越多,最理想的辦法是插件化,你編寫的代碼應(yīng)該是一個(gè)目錄或者module,里面有自己的interface,把它注入進(jìn)去以后,就可以與你的主線代碼交互。更直白一點(diǎn),我們?cè)瓉韺懙囊慌鶤PI代碼,API的RestfulAPI,想擴(kuò)展這個(gè)API,可以在原來代碼基礎(chǔ)上繼續(xù)寫,但是這個(gè)方式與原來是緊密的耦合。所以我們用Golang interface的方式注入,注入完以后,就可以實(shí)現(xiàn)想要的認(rèn)證,想要的registry,我們想要的各種其它的功能也都可以注入,這種方法在Golang里面非常方便,通過plugin tag的方式在Golang ini的時(shí)候就可以load,保證想要什么功能都可以加上。后臺(tái)其實(shí)只實(shí)現(xiàn)了少有的功能,即集群管理、日志、監(jiān)控、編排,其它比如數(shù)據(jù)庫、Docker的應(yīng)用目錄、賬號(hào)、信息這些都是通過擴(kuò)展的方式實(shí)現(xiàn)的。
Crane還是一個(gè)很小的project,所以我們也非常謹(jǐn)慎地引入第三方的組件?;貧w本質(zhì),我們寫這個(gè)project不是為了去做一件change the world的事情,而是遵從本心,想利用這個(gè)項(xiàng)目來學(xué)習(xí)Docker,學(xué)習(xí)Docker的東西是如何實(shí)現(xiàn)的,它的API是如何調(diào)用的,這是數(shù)人云Crane項(xiàng)目的本質(zhì)。這個(gè)項(xiàng)目的目的是為了推廣或者讓更多的開發(fā)者能夠?qū)W習(xí)到Docker的特性,然后直接參與到這個(gè)項(xiàng)目中來。
Crane的路線圖任何一個(gè)開源項(xiàng)目都有自己的roadmap,如果不做roadmap,那就是一個(gè)個(gè)人項(xiàng)目,而數(shù)人云要做一個(gè)至少是標(biāo)準(zhǔn)的開源項(xiàng)目。經(jīng)過一個(gè)月的時(shí)間,Crane目前是四百個(gè)星,也在持續(xù)地增加。雖然這個(gè)項(xiàng)目本身的核心技術(shù)并不是特別高,但是這個(gè)項(xiàng)目的標(biāo)準(zhǔn)化程度以及它的代碼質(zhì)量都是有保證的,我們?yōu)榇艘矊懥撕芏鄒nit test。
對(duì)于Crane的未來,我們會(huì)對(duì)事件流做一個(gè)補(bǔ)充,日志、存儲(chǔ)方面也會(huì)實(shí)現(xiàn)。因?yàn)镈ocker本身是是無狀態(tài)的應(yīng)用,所以存儲(chǔ)這一塊非常方便。Docker本身是plugin機(jī)制,它可以裝一些存儲(chǔ)的插件,比如Flocker。
長遠(yuǎn)來說,Crane因?yàn)槭且粋€(gè)開源項(xiàng)目,所以我們也避免跟其它項(xiàng)目同質(zhì)化。雖然大家都認(rèn)為控制面板很好做,但每個(gè)人的方向不一樣,Crane這個(gè)開源的項(xiàng)目沒有商業(yè)利益,它主要的目的是為了推廣Docker的技術(shù),讓開發(fā)者在學(xué)習(xí)中成長。
總結(jié)總結(jié)一下,再小的一個(gè)開源項(xiàng)目也是要投入的,在兩個(gè)月周期內(nèi),我們投入了開發(fā)相當(dāng)多的時(shí)間。也希望大家關(guān)注這個(gè)開源項(xiàng)目,上圖是Crane的界面,大家可以去看看,非常簡單在本地就可以搭建。今天分享就到這兒,謝謝大家。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26746.html
摘要:更多技術(shù)棧的包容數(shù)人云技術(shù)團(tuán)隊(duì)為了幫助廣大技術(shù)愛好者對(duì)新版本有快速直觀的感受,制作了一款基于最新特性的容器管理工具,具備一定容器開發(fā)經(jīng)驗(yàn)的開發(fā)者可以通過它在第一時(shí)間體驗(yàn)的新特性。可以說,數(shù)人云是在技術(shù)能否持續(xù)下去的爭論中發(fā)布的工具。 showImg(https://segmentfault.com/img/bVD5g2?w=900&h=500);中秋節(jié)前, 數(shù)人云技術(shù)團(tuán)隊(duì)推出了一...
摘要:愛奇藝歷程采用的軟件棧服務(wù)現(xiàn)狀集群建設(shè)自動(dòng)化部署經(jīng)驗(yàn)沒有采用嵌入式管理服務(wù)降低風(fēng)險(xiǎn),對(duì)紅帽有一點(diǎn)擔(dān)憂。再次感謝和數(shù)人科技共同組織的,非常期待下一次的周末相聚。 周末兩天都是大霧霾天,作為運(yùn)營也不能在家宅,告別了技術(shù)就得腿兒勤點(diǎn)兒。 非常感謝 Linker 的 Sam Chen 和 數(shù)人科技 的 CTO 共同組織的Mesos Meetup,OneAPM 最帥的 Docker 工程獅~陳亮...
摘要:年肖德時(shí)先生加入,擔(dān)任內(nèi)部工作組。老肖語錄是肖德時(shí)先生推出的個(gè)人公眾號(hào)欄目,他利用這個(gè)公眾號(hào)記錄自己創(chuàng)業(yè)路上的點(diǎn)點(diǎn)滴滴,不時(shí)會(huì)有精彩的技術(shù)感悟與分享,歡迎大家關(guān)注。 我今天看到一篇網(wǎng)友分享的 php 環(huán)境下的Docker持續(xù)集成案例。筆者大膽的試用后嘗到了容器技術(shù)的甜頭,也在文中提出了一個(gè)沒有解決的困惑。 原來他是把代碼放在容器外面,通過掛載目錄的方法把代碼加到容器里面運(yùn)行的。這樣雖然...
摘要:指導(dǎo)員明伯伯?dāng)?shù)人云工程師手記相關(guān)閱讀基于的集群管理開發(fā)實(shí)踐服務(wù)發(fā)現(xiàn),負(fù)載均衡和 這是一個(gè)容器信息臃腫的時(shí)代。 Docker 鯨魚鼓著圓圓的肚子在西雅圖開了一場名為 DockerCon2016 的大會(huì),全球 4000 人參加, 8 大看點(diǎn)留下對(duì)容器生態(tài)的更多暢想。 數(shù)人云一直專注于以企業(yè)級(jí)的 Mesos +容器技術(shù)棧,出于對(duì)容器新技術(shù)的熱愛,我們?cè)谏鐓^(qū)版的工具上小試牛刀,距 Docker...
閱讀 3487·2021-09-22 16:00
閱讀 3575·2021-09-07 10:26
閱讀 3147·2019-08-30 15:55
閱讀 2922·2019-08-30 13:48
閱讀 1414·2019-08-30 12:58
閱讀 2235·2019-08-30 11:15
閱讀 1030·2019-08-30 11:08
閱讀 621·2019-08-29 18:41