支持多進程容器的ContainerPilot 3.0已正式發(fā)布

責(zé)任編輯:editor004

作者:Hrishikesh Barua

2017-08-02 11:24:44

摘自:INFOQ

Joyent最近發(fā)布的3 0版ContainerPilot是一種可在容器內(nèi)部運行多個進程的Init系統(tǒng)。在本次發(fā)布的新版本中,每個進程都有自己的運行狀況檢查、依賴性、運行頻率

Joyent最近發(fā)布的3.0版ContainerPilot是一種可在容器內(nèi)部運行多個進程的Init系統(tǒng)。該系統(tǒng)可自動實現(xiàn)服務(wù)注冊,服務(wù)發(fā)現(xiàn)、運行狀況檢查,以及進程的生命周期管理任務(wù)。它提供了一種基于HTTP的全新API,簡化的配置語言,目前僅支持Consul。

通過處理隨后啟動的子進程,容器中的Init系統(tǒng)可順利應(yīng)對PID-1問題。ContainerPilot最初在構(gòu)建時采用了單一“主”應(yīng)用程序的概念,在第3版中,它可以充當(dāng)容器內(nèi)多個進程的控制器,這一改進主要來自用戶反饋,因為很多用戶對進程間依賴性的不同選項感到困惑。在本次發(fā)布的新版本中,每個進程都有自己的運行狀況檢查、依賴性、運行頻率,以及啟動和關(guān)閉過程中的生命周期鉤子等機制。

如果諸如服務(wù)發(fā)現(xiàn)代理等支撐進程獨立于主應(yīng)用運行,通常就會導(dǎo)致容器中運行多個進程。此類進程的配置方法可能與主應(yīng)用有所不同,同時主要還取決于同一個容器或外部容器中運行的其他服務(wù)。這些因素導(dǎo)致編排任務(wù)變得復(fù)雜無比。

對此Joyent提出了一種名為“Autopilot”的概念,借此可將編排方面的所有工作轉(zhuǎn)移給應(yīng)用程序本身,這樣就不再需要外部的編排程序了。此時的編排通常涉及服務(wù)端點在注冊表中的注冊操作,注冊后才能被其他服務(wù)查找,此外還提供了運行狀況檢查的相關(guān)定義,以及依賴項的定義和生命周期管理。在ContainerPilot的產(chǎn)品中,目前的最新版僅支持使用Hashicorp的Consul作為服務(wù)發(fā)現(xiàn)機制。原本對etcd的支持已取消。


圖片來源:https://www.joyent.com/blog/containerpilot-hello-world

ContainerPilot中基于HTTP的全新API可供用戶向控制應(yīng)用程序及其環(huán)境發(fā)送信號。HTTP請求可發(fā)送至容器內(nèi)部的Socket中,借此更新環(huán)境變量,切換維護模式,記錄Prometheus端點的度量指標,或重載ContainerPilot配置。這種方式取代了原本基于信號的機制,原先的機制只能切換狀態(tài),但無法提供結(jié)果反饋。

第3版中的配置語言整合了用戶定義服務(wù)生命周期事件之間依賴性的方法。例如,可以定義nginx僅在內(nèi)部的Consul代理啟動之后再啟動。這種依賴性可以通過啟動或停止其他服務(wù)的方式定義,或針對服務(wù)的任何中間狀態(tài)來定義。該版本還將之前定義的所有“行為”鉤子進行了整合,組成了一種名為作業(yè)(Job)的抽象。不同作業(yè)可相互綁定,借此創(chuàng)建由依賴應(yīng)用組成的鏈條。

ContainerPilot是由Joyent原有的一個名為ContainerBuddy的產(chǎn)品發(fā)展而來的,目前該產(chǎn)品也已成為一個開源項目,可訪問這里獲取。

閱讀英文原文:ContainerPilot 3.0 Released with Multiprocess Container Support

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號