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