本節書摘來自華章出版社《開源容器雲openshift:建構基于kubernetes的企業應用雲平台》一書中的第3章,第3.1節,作者 陳耿 ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
在上一章中,我們通過模闆部署了一個前端php應用及一個後端mysql資料庫。對使用者而言,部署的過程十分簡單,通過幾次滑鼠單擊即可完成應用的部署。但在使用者便利的幕後,其實openshift平台為使用者完成了大量操作。在這一章,我們将會深入了解應用部署背後的故事,深入了解openshift容器雲的架構。
從技術堆棧的角度分析,作為一個容器雲,openshift自底而上包含了以下幾個層次:基礎架構層、容器引擎層、容器編排層、paas服務層、界面及工具層,如圖3-1所示。
基礎架構層為openshift平台的運作提供了基礎的運作環境。openshift支援運作在實體機、虛拟機、基礎架構雲(如openstack、amazon web service、microsoft azure等)或混合雲上。在作業系統層面,openshift支援多種不同的linux作業系統,如企業級的red hat enterprise linux、社群的centos。值得一提的是,2015年red hat針對容器平台啟動了atomic project,并推出了專門針對容器化運作環境的作業系統atomic host。從技術上來看,atomic host也是一個linux作業系統,是基于red hat的企業版linux的基礎上優化和定制而來。通過根分區隻讀、雙根分區、rpm ostree等特性,atomic host可以為容器應用的運作提供一個高度一緻的環境,保證在大規模容器叢集環境中容器應用的穩定與安全。
在談到容器時,大家經常會提及容器的一個優點,那就是可以保證應用的一緻性。同樣的容器鏡像,在開發、測試和生産環境中運作的結果應該是一緻的。但是容器的一緻性和可移植性是有前提條件的,那就是底層作業系統的核心及相關的配置要一緻。容器為應用提供了一個隔離的運作環境,這個隔離的實作依賴于底層linux核心的系統調用。如果大量伺服器的linux核心及作業系統的配置不能保證一緻,那麼容器運作的最終結果的一緻性也不可能有保障。
openshift目前以docker作為平台的容器引擎。docker是目前主流的容器引擎,已經在社群及許多企業的環境中進行了檢驗。事實證明docker有能力為應用提供安全、穩定及高性能的運作環境。openshift運作的所有容器應用最終落到最底層的實作,其實就是一個個docker容器執行個體。openshift對docker整合是開放式的。openshift并沒有修改docker的任何代碼,完全基于原生的docker。熟悉docker的使用者對openshift能快速上手。同時,docker現有的龐大的鏡像資源都可以無縫地接入openshift平台。
目前大家對容器編排的讨論已經成為容器相關話題中的一個熱點。kubernetes是google在内部多年容器使用經驗基礎上的一次總結。kubernetes設計的目的是滿足在大規模叢集環境下對容器的排程和部署的需求。kubernetes是openshift的重要元件,openshift平台上的許多對象和概念都是衍生自kubernetes,如pod、namespace、replication controller等。與對docker的內建一樣,openshift并沒有嘗試從代碼上定制kubernetes,openshift對kubernetes
的整合是疊加式的,在openshift叢集上仍然可以通過kubernetes的原生指令來操作kubernetes的原生對象。
docker和kubernetes為openshift提供了一個良好的基礎,但是隻有容器引擎和容器編排工具并不能大幅度提高生産效率,形成真正的生産力。正如kubernetes在其首頁上自我介紹所描述的那樣,kubernetes關注的核心是容器應用的編排和部署,它并不是一個完整的paas解決方案。容器平台最終的目的是向上層應用服務提供支援,加速應用開發、部署和運維的速度和效率。openshift在paas服務層預設提供了豐富的開發語言、開發架構、資料庫及中間件的支援。使用者可以在openshift這個平台上快速部署和擷取一個資料庫、分布式緩存或者業務規則引擎的服務。除了docker hub上的社群鏡像外,openshift還有一個重要的服務提供方:red hat。red hat旗下的jboss中間件系列幾乎全線的産品都已經容器化。jboss中間件包含了開發架構、開發工具、應用伺服器、消息中間件、soa套件、業務流程平台(bpm)、單點登入、應用監控、應用性能管理(apm)、分布式緩存及資料虛拟化等産品。這些中間件可以直接通過openshift容器雲對使用者提供服務。通過openshift,可以快速搭建一個database as a service,即dbaas,一個bpmaas,或者redis-aas等。
雲平台一個很重要的特點是強調使用者的自助服務,進而降低運維成本,提高服務效率。界面和工具是容器雲平台上的最後一公裡接入,好的界面和工具集合能幫助使用者更高效地完成相關的任務。openshift提供了自動化流程source to image,即s2i,幫助使用者容器化用各種程式設計語言開發的應用源代碼。使用者可以直接使用s2i或者把現有的流程與s2i整合,進而實作開發流程的持續內建和持續傳遞。提升開發、測試和部署的自動化程度,最終提高開發、測試及部署的效率,縮短上市時間。openshift提供了多種使用者的接入管道:web控制台、指令行、ide內建及restful程式設計接口。這些都是一個完善的企業級平台必不可少的元件。
針對容器應用的運維及叢集的運維,openshift提供了性能度量采集、日志聚合子產品及運維管理套件,幫助運維使用者完成日常的應用及叢集運維任務。