天天看點

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

      大家所熟知的docker容器排程引擎包括,k8s, swarm, mesos和rancher,這些排程引擎都是開源的國外引擎,各有各的特點。在同客戶和圈内人士溝通中,很多人直言國内容器創業公司大多隻是将各種開源元件內建在一起,同質化嚴重,沒有核心競争力。作為國内第一批的容器創業公司——ghostcloud精靈雲,深知國内需要在容器的諸多領域擁有真正完全可控,同時具有核心競争力的産品。是以,容器雲平台最核心的排程引擎迫切需要一個完全可控,自主的産品,在這種背景下newbon應運而生。newbon取自“牛犇”的諧音,意在建構一個穩定的,牢固的容器排程引擎。接下來就簡單介紹一下newbon的實作細節,并通過一系列視訊進行功能展示。

      newbon包含幾個核心部分:

l  

<b>api-server : </b>為ui和第三方內建提供調用接口。

<b>scheduler :</b> 負責解釋定義,收集資料和執行排程。

<b>dns/etcd :</b> 負責服務注冊,服務發現,訂閱和容器主機通路。

<b>executer :</b>負責執行server端下發指令。

<b>monitor : </b>負責監控主機和容器的各種狀态。

<b>heapster :</b> 負責健康檢查。

<b>calico+ :</b> 經過二次開發的基于calico的網絡插件。

<b>nginx : </b>七層負載均衡器。

<b>haproxy :</b> 四層/七層負載均衡器。

<b>keepalive :</b> 高可用元件。

      下面是典型的邏輯結構圖:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

最上層是高可用叢集,中間接負載均衡器,底層接多個應用服務,從這幅圖就能看出,newbon從設計之初就支援高可用,負載均衡和彈性伸縮,以及多服務挂載。

接下來我們重點介紹下newbon中負責解釋定義,收集資料和執行排程的核心元件scheduler。

解釋服務定義

選擇合适的節點建立容器

監控節點和容器運作狀态

服務注冊和登出

自動擴容和縮容

灰階更新(rolling upgrade)

結合解釋服務定義,下面是一個服務示例:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

應用支援的擴充配置:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

健康檢查配置支援(tcp):

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

健康檢查配置支援(http):

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

服務配置:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

排程配置:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

高可用叢集:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

      在容器排程引擎中,這三個過程可以說是最核心的地方。newbon借鑒了多個排程引擎的優點,使用了etcd和dns并結合控制伺服器來實作以下功能:

·            

建立服務後自動建立dns記錄用于通路相關容器:

§  

a記錄,通過域名通路單個容器和一組容器。

srv記錄,記錄容器提供的服務協定、端口、優先級和提供服務的ip清單。

容器狀态健康後注冊srv資訊:

·        

當容器停止或處于不健康狀态時,會登出dns a記錄和srv資訊。

下面就是一個dns紀錄示例:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

      這一部分主要通過以下方式實作:

agent

monitor 子產品實時監測容器cpu和記憶體使用情況:

定義性能名額門檻值和容器運作上限和下限。

 擴容:

當容器平均性能名額超過門檻值一段時間(1分鐘)後啟動自動擴容,建立更多容器以達到

閥值要求的90%。

當沒有主機資源運作新容器時,自動申請新主機(限公有雲環境)。

縮容:

 當一段時間(3分鐘)負載持續低于門檻值80%啟動縮容。

優先删除新建立容器和主機,以釋放資源和降低營運成本。

下面是一個擴容的示意圖:

【幹貨】全自主研發Docker容器排程引擎——Newbon 背景:

      接下來我們将通過視訊的方式給大家展示newbon所支援的一系列功能,本期重點展示newbon的自動擴充功能:

<a href="https://v.qq.com/x/page/i03670gm0fh.html">https://v.qq.com/x/page/i03670gm0fh.html</a>

q: 既然已經有k8s, swarm,

mesos, rancher等排程引擎,為什麼精靈雲還要自主研發排程引擎newbon呢?

a: 排程引擎是容器雲平台最核心的部分,開源固然可以快速上手,快速搭建系統,但是任何一個開源系統實際是由一個或多個公司主導的,是以在使用中經常會受制于國外。開源系統由于需求和貢獻者多,是以會導緻系統異常龐大,企業往往隻需要使用20%功能,但是卻要去維護80%的其他系統。是以,精靈雲從一開始就選擇自主研發排程架構,做到完全自主可控,為企業級使用者提供更好的服務。

q:

newbon 跟其他容器排程相比有何優勢?

a:

newbon吸取各排程引擎的長處,可以說是目前國内定制能力最強,支援功能豐富的排程架構,包括在網絡、應用遷移、應用快照、模闆、負載均衡、彈性伸縮、高可用、ci/cd內建、灰階釋出和復原、鏡像內建、日志監控等方面都有着非常大的優勢。

newbon穩定嗎?有多少使用者在使用?

newbon雖然是最近才對外公布,但實際是精靈雲核心研發團隊多年的積累。團隊在核心和分布式領域有豐富的經驗,主要來自于veritas, emc,微軟和ibm,平均擁有10年以上分布式系統研發經驗,曾負責華為存儲軟體的oem工作。veritas可以說是分布式領域的兵工廠,它的veritas cluster

server是最早的分布式中間件,k8s容器負責人dawn chen也曾就職于veritas。是以,newbon是集衆家之所長,并且在精靈雲的公有雲上得到了充分的驗證,支撐數萬使用者和數十萬的容器排程。newbon從ecos 2.0開始内置,目前已經在多家中大型企業得到運用。