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