今年以來,遠程辦公、遠程會議走進了大多數(shù)人的日常工作中,各類云產(chǎn)品相繼被人們所熟悉,例如石墨云”O(jiān)FFice”辦公軟件、騰訊云平臺、云課堂,為實現(xiàn)多人協(xié)同辦公、遠程操控等需求,提供多類渠道。這些應(yīng)用可能在實現(xiàn)技術(shù)上,不是嚴(yán)格意義的上云,但“云”逐漸浸透各個領(lǐng)域,暈染出不一樣的風(fēng)采。
“上云”一詞早已流行,各小中大企業(yè)為擺脫地域限制、減輕研發(fā)成本、實現(xiàn)安全可靠管理保障,紛紛研究“如何上云”。作為一個奔跑在新型IT時代的逐夢人,我踏上了尋找杰克魔豆的旅程,下面是我在探索道路上的所見所聞。
開始
云計算從2006年提出至今,經(jīng)歷了翻天覆地的發(fā)展變化,由IaaS到PaaS、SaaS,應(yīng)用越來越廣泛。在其發(fā)展初期,IT建設(shè)多圍繞IaaS進行,包括計算虛擬化、網(wǎng)絡(luò)虛擬化、存儲虛擬化等,使用對象主要是虛擬機。但由于虛擬機承載的是操作系統(tǒng),我們依然需要在操作系統(tǒng)中安裝基礎(chǔ)軟件,并未減輕開發(fā)人員部署環(huán)境的壓力。然而自Docker為代表的容器技術(shù)出現(xiàn)后,實現(xiàn)應(yīng)用可以在容器中直接運行,切實減輕了程序員部署精力,促進了容器PaaS的迅速發(fā)展,并已逐漸形成云生態(tài)體系——以Docker、Kubernetes為核心,由Docker提供應(yīng)用級的主機抽象,Kubernetes提供應(yīng)用級的集群抽象。在此基礎(chǔ)上涌現(xiàn)了紅帽O(jiān)penShift等優(yōu)秀企業(yè)級PaaS產(chǎn)品。
本文將著重對Docker、Kubernetes、Openshift的發(fā)展歷史及架構(gòu)進行分析,并分享“部署自研運維系統(tǒng)到云平臺”的實踐經(jīng)驗。
標(biāo)準(zhǔn)化的軟件構(gòu)建與分發(fā)技術(shù)Docker
1.容器技術(shù)優(yōu)勢
前文說,容器技術(shù)的誕生,為減輕開發(fā)人員部署環(huán)境壓力,提供了可能。容器技術(shù)也打造了一套標(biāo)準(zhǔn)化的軟件構(gòu)建和分發(fā)流程,為降低運維成本、提高軟件安全和運行穩(wěn)定等方面提供便利。容器技術(shù)不僅僅打造一個運輸用的“集裝箱”,還保證軟件在容器內(nèi)能夠運行,在操作系統(tǒng)上構(gòu)成“獨立的箱子”。這需要解決文件系統(tǒng)、網(wǎng)絡(luò)、硬件等多方面的問題。經(jīng)過長時間的發(fā)展,容器技術(shù)現(xiàn)已逐步成熟。使用容器技術(shù)后,開發(fā)者可以使用熟悉的編程語言開發(fā)軟件,之后用容器技術(shù)打包構(gòu)建,便可一鍵運行在所有支持該容器技術(shù)的平臺上。
2.容器技術(shù)的典型代表——Docker架構(gòu)
Docker是一個構(gòu)建、發(fā)布、運行分布式應(yīng)用的平臺,Docker平臺整體可以看成由Docker引擎(運行環(huán)境+打包工具)、Docker Registry(API+生態(tài)系統(tǒng))兩部分組成。包括Docker Client、Docker daemon、Docker Image、Docker Container等部分。
其中Docker引擎可以分為守護進程和客戶端兩大部分。Docker引擎的底層是各種操作系統(tǒng)以及云計算基礎(chǔ)設(shè)施,而上層則是各種應(yīng)用程序和管理工具,每層之間都是通過API來通信的。詳細介紹如下。
Docker Client是Docker提供命令行界面(CLI)工具,是用戶與Docker進行交互的主要方式。客戶端可以構(gòu)建,運行和停止應(yīng)用程序,還可以遠程與Docker_Host進行交互。
Docker daemon是服務(wù)器組件,以Linux后臺服務(wù)的方式運行,是Docker最核心的后臺進程。它負(fù)責(zé)響應(yīng)來自Docker Client的請求,然后將這些請求翻譯成系統(tǒng)調(diào)用完成容器管理操作。
Docker鏡像可以看作是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。
Docker容器就是Docker鏡像的運行實例,是真正運行項目程序、消耗系統(tǒng)資源、提供服務(wù)的地方。
Docker提供了應(yīng)用級的主機抽象,可以更容易地實現(xiàn)應(yīng)用的快速申請和部署。
容器時代的舵手Kubernetes
如果說Docker是容器時代的大船,Kubernetes就是指引船只的舵手。作為容器集群管理工具,Kubernetes有一套健壯的集群自恢復(fù)機制,包括容器的自動重啟、自動重調(diào)度以及自動備份甚至負(fù)載等。
1.Kubernetes的發(fā)展歷程
Kubernetes前身是谷歌大規(guī)模集群管理系統(tǒng)Brog,它基于容器技術(shù),實現(xiàn)資源管理的自動化,以及跨數(shù)據(jù)中心資源利用的最大化。Kubernetes于2015年正式對外發(fā)布,經(jīng)過4年多的發(fā)展,為容器編排提供強大的解決方案,成為云原生系統(tǒng)的重要支撐。
當(dāng)前,國內(nèi)外的很多企業(yè)都建立了基于Kubernetes的云平臺,如OpenShift、阿里云等。下面分別簡述阿里巴巴和美團點評的云平臺發(fā)展實踐歷程。
阿里巴巴于2013年開始探索由容器替換虛擬機,2018年開始自研容器調(diào)度系統(tǒng)向Kubernetes轉(zhuǎn)型,2019年阿里業(yè)務(wù)全面上云,2019年雙十一中,基于Kubernetes的生態(tài)體系支撐了阿里史上規(guī)模最大的集群。
美團點評于2013年開始搭建云計算平臺,2016年基于Docker搭建自研容器管理平臺,2018年引入Kubernetes到云平臺中,提升了平臺的穩(wěn)定性和資源使用效率。
2.Kubernetes的架構(gòu)
在Kubernetes中,Service是分布式集群架構(gòu)的核心。它是一種抽象概念,每一個Service后端有多個Pod,所有的容器均在Pod中運行。下圖是一個典型的Kubernetes架構(gòu)圖。
Kubernetes由兩種節(jié)點組成:Master節(jié)點,為管理節(jié)點;Node節(jié)點,為容器運行結(jié)點。
Service是架構(gòu)的核心,提供遠程服務(wù),它的后端有多個Pod,每個容器均在Pod中運行。一個Service可以橫跨多個Node,也可能一個Node里包含多個Service,一個Pod里也可以包含多個Container(容器)。
Pod是Kubernetes的最小調(diào)度單位,所以在我行實際應(yīng)用中,一般一個Pod中只部署一個容器,以提高穩(wěn)定性,降低風(fēng)險。一個Label是一對鍵/值對,用來傳遞用戶定義的屬性。例如,可以用“Taihangboot”來標(biāo)記一個太行應(yīng)用。
Replication Controller,用來確保任意時間都有指定數(shù)量的Pod“副本”在運行。如果為某個Pod創(chuàng)建了Replication Controller并且指定2個副本,它會創(chuàng)建2個Pod,并且持續(xù)監(jiān)控它們。
Kubernetes是強大的云原生體系工具,對容器進行編排,實現(xiàn)了集群化的管理。
企業(yè)級PaaS平臺中的翹楚OpenShift
紅帽O(jiān)penShift平臺在Kubernetes的基礎(chǔ)上,提高了平臺運行穩(wěn)定性,集成了Jeckins等工具,更易于實現(xiàn)Devops,可以為企業(yè)提供全面的應(yīng)用上云服務(wù)。
1.OpenShift的發(fā)展歷程
OpenShift是由紅帽公司推出的PaaS云計算平臺,它誕生于2011年,核心架構(gòu)采用自研容器編排平臺Gear。Kubernetes推出后,紅帽決定對OpenShift進行重構(gòu)。2015年6月,紅帽推出了基于Kubernetes1.0的OpenShift3.0。2018年6月,OpenShift4.1發(fā)布,它與OpenShift3.0相比,較大的變化是引入了CoreOS作為默認(rèn)操作系統(tǒng)。當(dāng)前最新版本的OpenShift平臺是2019年12月17日發(fā)布的4.2.11,新版系統(tǒng)進一步實現(xiàn)了混合云環(huán)境企業(yè)級服務(wù)的簡化和自動化,同時可以讓開發(fā)者通過云原生應(yīng)用實現(xiàn)創(chuàng)新并提高業(yè)務(wù)價值。
OpenShift在Kubernetes的基礎(chǔ)上擴展提供了軟件定義網(wǎng)絡(luò)、軟件定義存儲、權(quán)限管理、企業(yè)級鏡像倉庫、統(tǒng)一入口路由、持續(xù)集成流程(S2/Jenkins統(tǒng)一管理控制臺、監(jiān)控日志等功能,形成覆蓋整個軟件生命周期的解決方案,提供了企業(yè)級的服務(wù)支持。當(dāng)前其提供三種產(chǎn)品:OpenShift Online、OpenShift Enterprise和OpenShift Origin。其中,OpenShift Online是面向普通開發(fā)者和小微企業(yè)的線上公有云平臺;OpenShift Enterprise是面向企業(yè)的私有云平臺;OpenShift Origin是一個開源項目,是構(gòu)成前兩個的基礎(chǔ)。
2.OpenShift的技術(shù)架構(gòu)
OpenShift平臺可以安裝于幾乎所有的基礎(chǔ)平臺上,例如裸機、虛擬機、私有云、公有云等。整個OpenShift平臺可以分為Container Storage、CoreOS、Kubernetets、Automated operations、Services等幾個層級。下面分別進行介紹。
OpenShift平臺可以安裝于幾乎所有的基礎(chǔ)平臺上,例如裸機、虛擬機、私有云、公有云等。整個OpenShift平臺可以分為Container Storage、CoreOS、Kubernetets、Automated operations、Services等幾個層級。下面分別進行介紹。
Container Storage是持久化的存儲結(jié)構(gòu),它為整個基于容器的環(huán)境提供存儲支持。CoreOS是Linux的一個發(fā)行版,提供容器執(zhí)行的基礎(chǔ)操作系統(tǒng)。Kubernetes即容器編排的調(diào)度平臺。Automated operations指的是對于集群上運行的容器宿主機、Kubernetes集群和應(yīng)用等服務(wù),進行自動化的更新、管理等功能。Services包含平臺所提供的具體服務(wù),如集群服務(wù)(監(jiān)控、擴縮容、鏡像倉庫、日志系統(tǒng)),應(yīng)用服務(wù)(融合中間件、基礎(chǔ)軟件服務(wù)),Service Mesh(管理微服務(wù)應(yīng)用),開發(fā)服務(wù)(開發(fā)工具、自動構(gòu)建、持續(xù)集成、持續(xù)交付)等。
可以看出,OpenShift在Kubernetes的基礎(chǔ)上,提供了底層支持,擴展了應(yīng)用功能,以提供更全面、更便捷的服務(wù)。
智能運維系統(tǒng)上云實踐
智能運維系統(tǒng)是一個全面的運維平臺,可以實現(xiàn)監(jiān)控相關(guān)系統(tǒng)的主要運行指標(biāo)、發(fā)現(xiàn)異常后匹配應(yīng)急方案、發(fā)起應(yīng)急操作及驗證、系統(tǒng)配置、用戶管理等功能。
將該系統(tǒng)部署于OpenShift平臺簡要來說可分為3個步驟:創(chuàng)建容器、將生成的容器打好標(biāo)簽推送至鏡像倉庫、在OpenShift平臺拉取鏡像開始配置運行。介紹如下。
1.創(chuàng)建容器
通過Dockerfile來組合基礎(chǔ)鏡像和軟件,Dockerfile中包含的內(nèi)容包括基本鏡像、要安裝的軟件包,要復(fù)制到容器中的軟件,網(wǎng)絡(luò)端口和掛載的存儲卷等信息。編寫好Dockerfile后,可通過運行docker build命令來創(chuàng)建一個存儲在本地的容器鏡像。
2.將生成的容器打好標(biāo)簽推送至鏡像倉庫
使用docker tag命令向新容器鏡像添加標(biāo)簽,以標(biāo)識其在鏡像倉庫的位置。然后,通過運行docker push命令將該鏡像推送到鏡像倉庫。
3.在OpenShift平臺配置運行容器
在OpenShift平臺配置Deployment、Service、Router等運行策略,即可從鏡像倉庫拉取相關(guān)鏡像,自動分配Pod,相關(guān)應(yīng)用即可對外提供服務(wù)。
到此,有關(guān)云平臺技術(shù)的介紹已經(jīng)分享完畢。從基礎(chǔ)容器技術(shù)Docker,到集群容器編排Kubernetes,最后到企業(yè)級PaaS平臺OpenShift,云技術(shù)越來越成熟,并逐步形成生態(tài)體系。云原生應(yīng)用體系對于Devops、微服務(wù)等的實現(xiàn)也具有天然的優(yōu)勢,在持續(xù)集成、持續(xù)部署上更加高效、安全,極大的提高了生產(chǎn)效率,將在企業(yè)數(shù)字化轉(zhuǎn)型中發(fā)揮巨大的作用。
最后
作為一個奮戰(zhàn)在一線的運維人員,經(jīng)常遇到集群擴容、環(huán)境遷移、頻繁的變更等等一系列繁雜的任務(wù)與問題,處理起來費時且容易出錯。在接觸到云原生應(yīng)用后,被其標(biāo)準(zhǔn)化、輕量、高效的運行、部署模式所吸引,感受到應(yīng)用上云對運維方式帶來的巨大改變,故障自愈、一鍵遷移、一鍵部署等都輕易實現(xiàn),隨后對各個技術(shù)的官網(wǎng)文檔、相關(guān)書籍、網(wǎng)絡(luò)博客進行了研究,形成了本文,希望能對未來的系統(tǒng)建設(shè)添磚加瓦。
責(zé)任編輯:tzh
-
云計算
+關(guān)注
關(guān)注
39文章
7708瀏覽量
137129 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7489瀏覽量
88555 -
容器
+關(guān)注
關(guān)注
0文章
492瀏覽量
22028
發(fā)布評論請先 登錄
相關(guān)推薦
評論