雲起之時,開源有道
開源容器雲
為了響應快速變化的業務需求,IT業界正在進行一場變革,在這場變革中,用戶通過容器作為手段,在應用程序開發、測試、部署,在IT運維的各個環節進行方方面面的改進和提升。如同第二次工業革命,新技術的應用帶來了生產效率和生產力的提升,意味著順應變革的企業會有更強的競爭能力。它們的應用能更快地上線,想法能更快地變成現實,變成企業的現金收入。相反,沒有擁抱新技術和變革的企業的競爭能力將會快速下滑。通過對社區及國內的幾場大型容器會議的觀察,可以明顯感覺到經過了這些年的發展,目前容器技術的使用已經是不可逆轉的趨勢。企業現在的關注重點已經不再停留於容器技術可不可用,而轉變到了如何使用容器,如何用好容器來提升自己IT的效率,提升企業的競爭能力。
既然決定要投入這場變革,擁抱新的技術,那麼下一個問題就是:應該怎麼做?通過Docker啟動一個容器很簡單,但是要管理好千千萬萬個容器,需要的不僅僅是熱情和勇氣。
我們需要回答許多問題,如容器鏡像從哪裡來?怎麼保證容器運行環境的安全?如何進行容器的調度?多主機上的容器如何通信?容器的持久化數據怎麼解決?處理好這些問題,需要有切切實實可以落地的方案。一個企業要自行解決所有的這些問題,可以說是不可能完成的任務,其需要投入的人力、物力和時間成本,不是單純一個企業可以接受的。通過現有的技術或平台快速構建企業自有的容器平台,從經濟成本及技術難度角度考量,可以說是更為符合現狀的合理選擇。
現代容器技術的根據地是開源社區。開源社區提供了一個活躍的舞台,這個舞台凝聚來自世界各地的企業、團隊及個人。可以說目前開源社區是IT行業創新發生最高度密集的地方。開源軟體目前被應用在IT行業的方方面面,如我們的開發工具、編程語言、編程框架、中間件、資料庫、操作系統、儲存、網路、雲等。通過開源社區的技術,完全可以構建出一個穩定可靠的企業IT技術堆棧。現今企業要基於已有的解決方案構建自有的容器雲平台,我認為,開源的容器雲平台是一個必然的選擇。
OpenShift
圖1-1容器雲OpenShift開源項目主頁
OpenShift是一個開源容器雲平台,是一個基於主流的容器技術Docker及Kubernetes構建的雲平台。作為一個開源項目,OpenShift已有5年的發展歷史,其最早的定位是一個應用雲平台(Platform as a Service,PaaS)。在Docker時代來臨之前,各個廠商和社區項目傾向構建自己的容器標準,如CloudFoundry的Warden、OpenShift的Gear,但是在Docker成為主流及社區的技術發展方向後,OpenShift快速地擁抱了Docker,並推出了市場上第一個基於Docker及Kubernetes的容器PaaS解決方案。OpenShift對Docker及Kubernetes的整合和OpenShift項目最大的貢獻方紅帽公司(Red Hat Inc.)有著很大的關係。Red Hat對於Linux和開源愛好者而言不用過多的介紹,在某個時代,Red Hat幾乎成為了Linux的代名詞,它是目前世界上最大的開源軟體公司,是開源社區的領導者。Red Hat是OpenShift項目最大的貢獻者,同時也是Docker和Kubernetes項目重要的貢獻方。正是Red Hat對社區技術發展的敏銳觸覺促成了OpenShift與Docker及Kubernetes的整合。事實證明這個決定非常明智。OpenShift前幾年在容器和PaaS領域的經驗積累,疊加上Docker和Kubernetes容器及容器編排上的特性,一經推出就受到了廣泛的關注和好評,連續兩年獲得InfoWorld年度技術創新大獎。
通過OpenShift這個平台,企業可以快速在內部網路中構建出一個多租戶的雲平台,在這朵雲上提供應用開發、測試、部署、運維的各項服務(如圖1-2所示)。OpenShift在一個平台上貫通開發、測試、部署、運維的流程,實現高度的自動化,滿足應用持續集成及持續交付和部署的需求;滿足企業及組織對容器管理、容器編排的需求。通過OpenShift的靈活架構,企業可以以OpenShift作為核心,在其上搭建一個企業的DevOps引擎,推動企業的DevOps變革和轉型。
圖1-2OpenShift上運行的容器應用
Docker、Kubernetes與OpenShift
許多剛接觸OpenShift的朋友會有這樣一個疑問:「Open-Shift與Docker及Kubernetes的關係究竟是什麼?」OpenShift是基於容器技術構建的一個雲平台。這裡所指的容器技術即包含Docker及Kubernetes。如圖1-3所示,OpenShift底層以Docker作為容器引擎驅動,以Kubernetes作為容器編排引擎組件。OpenShift提供了開發語言、中間件、自動化流程工具及界面等元素,提供了一套完整的基於容器的應用雲平台。
容器引擎
Docker的優勢在於它可以構建一個隔離的、穩定的、安全的、高性能的容器運行環境。目前,OpenShift使用原生的Docker作為平台的容器引擎,為上層組件及用戶應用提供可靠安全的運行環境具有十分重要的價值:
Docker有非常大的用戶基礎。以Docker為基礎引擎,降低了用戶學習的成本。熟悉Docker的用戶可以非常容易地上手。
Docker Hub上有海量的鏡像資源。我們日常使用的絕大部分軟體,都可以在Docker-
Hub上找到官方的或社區貢獻的鏡像。所有的這些鏡像都可以無縫地運行在OpenShift平台上。
Red Hat本身就是Docker的一個主要貢獻者,它們對社區有著很強的影響力,對這個技術的發展也有著很強的領導力。這一點對企業用戶來說非常關鍵,因為誰也不想投資在一個沒有前景或過時的技術上。
這裡值得關注的一點是OpenShift使用的Docker是原生的Docker,沒有任何閉源的修改。因為歷史的原因,有些應用雲平台如CloudFoundry的選擇是兼容Docker的。通過拷貝Docker的部分源代碼加入它們的容器引擎中,以讀取Docker鏡像的內容,然後啟動一個非Docker的容器實例。這種兼容的做法,我個人認為是值得商榷的。這讓我聯想起了當年安卓崛起後,為了挽回頹勢,黑莓手機(BlackBerry)推出在自家系統中兼容運行安卓應用的做法。作為曾經黑莓Z10的用戶,我非常喜歡那款精緻的手機,但不得不說,在黑莓系統上運行安卓應用,簡直就是一個噩夢。
容器編排
Docker的流行使得當下每每提起容器時,大家更容易想到的是Docker,甚至說是只有Docker。但是現實是,Docker其實只是容器技術中的一個點。Docker是一款非常優秀和受歡迎的容器引擎,但是當企業或者某一個組織要大規模地將容器技術應用到生產中時,除了有優秀的容器引擎提供穩定可靠及高效的運行環境之外,還需要考慮集群管理、高可用、安全、持續集成等方方面面的問題。單憑一個容器引擎,並不能滿足容器技術在生產環境中的需求,尤其是規模較大的生產環境。
在大規模的容器部署環境中,往往涉及成百上千台物理機或者運行於IaaS之上的虛擬機。面對數量龐大的機器集群,用戶面臨著巨大的管理挑戰。舉個簡單的例子,假設我們需要在100台機器上啟動100個容器實例,通過手工的方式在100台機器上執行docker run命令將會是一件瘋狂的事情。又比如,我們希望20個容器部署在美國機房、20個容器部署在上海機房、20個容器部署在深圳機房有SSD的伺服器上,20個容器部署在深圳機房帶萬兆網卡的機器上,通過人工或者傳統的自動化工具來實現複雜的部署需求將會十分低效。現實是,為了滿足容器集群所需的調度、網路、儲存、性能及安全的需求,我們必須有專業的工具和平台。這些關於容器集群管理的問題,其實就是容器編排的問題,即Kubernetes要解決的問題。
Kubernetes是Google十多年容器使用經驗的總結,雖然Google使用的容器是Docker時代之前的容器,但是業務應用對安全、性能、隔離、網路、儲存及調度方面的需求,在最原始的本質上其實並沒有發生變化。Google選擇和Red Hat一同開源了Kubernetes,且目前在GitHub上的關注程度遠遠高於其他同類的平台,未來非常可能在容器編排領域成為類似Docker一樣的「事實標準」。
OpenShift集成了原生的Kubernetes作為容器編排組件。OpenShift通過Kubernetes來管理容器集群中的機器節點及容器,為業務應用提供:
容器調度:按業務的要求快速部署容器至指定的目標。
彈性伸縮:按業務的需要快速擴展或收縮容器的運行實例數量。
異常自愈:當容器實例發生異常,集群能自動感知、處理並恢復服務狀態。
持久化卷:為散布在集群不同機器上的容器提供持久化卷的智能對接。
服務發現:為業務微服務化提供服務發現及負載均衡等功能。
配置管理:為業務應用提供靈活的配置管理及分發規則。
容器應用雲
前文談到了容器引擎及容器編排,這兩項是容器技術的重要基石。掌握這兩個基石,用戶就具備了運維大規模容器集群的能力。現實中用戶考慮使用容器應用平台的一個最終的目的就是提高生產效率。容器引擎及容器編排組件是兩項關鍵的技術,但是光有技術還不能滿足生產效率的要求。在這些技術及框架的基礎上,必須有更豐富的內容以及更友好的用戶接入方式,把這些技術轉化成實實在在的生產力。
OpenShift在Docker和Kubernetes的基礎上提供了各種功能,以滿足業務應用、研發用戶及運維用戶在生產效率上的訴求。
應用開發框架及中間件。OpenShift提供了豐富的開箱即用的編程開發框架及中間件,如Java、PHP、Ruby、Python、JBoss EAP、Tomcat、MySQL、MongoDB及JBoss系列中間件等。
應用及服務目錄。OpenShift提供了如軟體市場式的服務及應用目錄,可以實現用戶一鍵部署各類應用及服務,比如一鍵部署Hadoop集群和Spark集群。
自動化流程及工具。OpenShift內置了自動化流程工具S2I(Source to Image),幫助用戶自動化完成代碼的編譯、構建及鏡像發布。
軟體自定義網路。通過OpenVSwitch,OpenShift為用戶提供了靈活強健的軟體定義網路。實現跨主機共享網路及多租戶隔離網路模式。
性能監控及日誌管理。OpenShift提供了開箱可用的性能監控及日誌管理的組件。通過平台,業務能快速獲取運行狀態指標,對業務日誌進行收集及分析。
多用戶介面。OpenShift提供了友好的Web用戶界面、命令行工具及RESTful API。
自動化集群部署及管理。OpenShift通過Ansible實現了集群的自動化部署,為集群的自動化擴容提供了介面。
通過前面的介紹,我們可以了解到OpenShift在Docker及Kubernetes的基礎上做了方方面面的創新,最終目的就是為用戶及業務應用提供一個高效、高生產力的平台。
OpenShift社區版與企業版
OpenShift是一個開源項目,所有的源代碼都可以在GitHub倉庫上查閱及下載。企業和個人都可以免費下載和使用OpenShift構建屬於自己的容器雲平台。我們也可以加入OpenShift的社區成為一名光榮的OpenShift社區貢獻者。
開源軟體的一大好處在於,用戶可以自由選擇和免費使用。缺點是沒有人會對軟體的使用提供支持保障。對於個人用戶來說,這不是問題。但是對於企業來說,更多是希望有人能在出現問題的時候提供專業的支持和保障。這種需求給一些公司提供了機會,他們在開源軟體的基礎上進行定製、測試、修復及優化,推出企業版本,並對之進行支持。這種軟體稱為開源商業軟體。Red Hat就是開源軟體商業模式的奠基人,而且是目前世界上最大的開源軟體公司。OpenShift的開源社區版本叫OpenShift Origin,Red Hat在OpenShift Origin的基礎上推出了OpenShift的企業版本,其中包含了公有雲服務OpenShift Online及私有雲產品OpenShift Container Platform(以前也稱為OpenShift Enterprise)。更多關於OpenShift企業版的信息可以訪問OpenShift企業版的主頁:http://www.openshift.com。
OpenShift的企業版和社區版在代碼上十分相似,功能上可以說是基本一致。企業版是基於某個社區版版本產生的。作為一個開源軟體公司,Red Hat所有產品的企業版的源代碼也是完全公開的。就我個人的經驗而言,企業版往往會更穩定,因為社區版的代碼變化會更頻繁。
經常會被問到這樣一個問題:「究竟我們是使用社區版還是企業版比較好?」這個問題沒有唯一的答案,要視用戶所處的使用場景而言。對於個人用戶的開發測試及出於研究目的而言,社區版會是一個不錯的選擇,但是其實OpenShift的企業版也對個人用戶免費開放。對於企業的關鍵業務應用的部署而言,企業版自然會是更好的選擇,企業版除了穩定以外,還有專業的售後支持。
目前一些OpenShift的企業客戶,在使用OpenShift企業版的同時,也會將他們的需求以提案或代碼的方式提交到社區,在被社區評審接納以後融入成為OpenShift產品未來版本的核心特性。這樣做的好處是,企業所需的功能往後就由社區進行維護,不存在如自定義的修改在未來版本還需要進行測試及匹配,從而帶來不可預知的工作量和風險。企業用戶參與到開源社區,可以對產品的發展方向發表自己的看法。從而避免在傳統的閉源商業軟體時代用戶只能被廠商牽著鼻子走的窘境。
本書的內容將以OpenShift社區版OpenShift Origin進行探討及講解。相關的經驗也適用於OpenShift的企業版OpenShift Container Platform。在一般情況下,本書將直接使用OpenShift來指代OpenShift的社區版和企業版。在企業版和社區版存在差異的情況下,將會特別標註。
接下來讓我們揚帆起航,開啟一段通往企業容器雲的旅程。
點擊展開全文


※TIOBE 7月編程語言排行榜:Go語言飆升至前十 Java暴跌
※2017年全球最聰明公司排行榜TOP50,哪9家中國公司上榜?
※分分鐘帶你殺入Kaggle Top 1%
※全球100款大數據工具匯總,入行必備
※成為Java頂尖程序員,看這11本書就夠了,及十個必備的技術網站
TAG:CSDN |
※在高雄「坐看雲起時」
※行到水窮處,坐看雲起時,詩佛王維得道了嗎
※瑜伽的「行至水窮處,坐看雲起時」
※行到水窮處,坐看雲起時(下)
※行到水窮處,坐看雲起時!
※行到水窮處,坐看雲起時:不妨在馬拉松之前去看看返灣湖
※王維的禪意,坐看雲起時
※朱一龍:坐看雲起時
※行到水窮處,坐看雲起時(上)
※行到水窮處,坐看雲起時——映山紅盆景
※「蘇東坡」行至水窮處,坐看雲起時「共享」
※李曉東:人生大起大落又如何,行到水窮處,坐看雲起時
※詩詞里的淡然:行到水窮處,坐看雲起時
※處暑:行到水窮處,坐看雲起時
※雲起時︱月上柳梢頭,奪命黃昏後
※行到水窮處,坐看雲起時——香格里拉
※禪意人生:行到水窮處,坐看雲起時
※唐詩閑讀:「行到水窮處,坐看雲起時」
※中國新能源汽車「暗戰」雲起 亂象之下必有勇夫
※不亂於心,不困於情。不畏將來,不念過往。笑看風雲淡,坐對雲起時