0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解析Docker、Kubernetes、Openshift的發(fā)展歷史及架構(gòu)

我快閉嘴 ? 來源:CSDN云計(jì)算 ? 作者:劉鵬宇 ? 2020-09-08 10:15 ? 次閱讀

今年以來,遠(yuǎn)程辦公、遠(yuǎn)程會議走進(jìn)了大多數(shù)人的日常工作中,各類云產(chǎn)品相繼被人們所熟悉,例如石墨云”O(jiān)FFice”辦公軟件、騰訊云平臺、云課堂,為實(shí)現(xiàn)多人協(xié)同辦公、遠(yuǎn)程操控等需求,提供多類渠道。這些應(yīng)用可能在實(shí)現(xiàn)技術(shù)上,不是嚴(yán)格意義的上云,但“云”逐漸浸透各個(gè)領(lǐng)域,暈染出不一樣的風(fēng)采。

“上云”一詞早已流行,各小中大企業(yè)為擺脫地域限制、減輕研發(fā)成本、實(shí)現(xiàn)安全可靠管理保障,紛紛研究“如何上云”。作為一個(gè)奔跑在新型IT時(shí)代的逐夢人,我踏上了尋找杰克魔豆的旅程,下面是我在探索道路上的所見所聞。

開始

云計(jì)算從2006年提出至今,經(jīng)歷了翻天覆地的發(fā)展變化,由IaaS到PaaS、SaaS,應(yīng)用越來越廣泛。在其發(fā)展初期,IT建設(shè)多圍繞IaaS進(jìn)行,包括計(jì)算虛擬化、網(wǎng)絡(luò)虛擬化、存儲虛擬化等,使用對象主要是虛擬機(jī)。但由于虛擬機(jī)承載的是操作系統(tǒng),我們依然需要在操作系統(tǒng)中安裝基礎(chǔ)軟件,并未減輕開發(fā)人員部署環(huán)境的壓力。然而自Docker為代表的容器技術(shù)出現(xiàn)后,實(shí)現(xiàn)應(yīng)用可以在容器中直接運(yùn)行,切實(shí)減輕了程序員部署精力,促進(jìn)了容器PaaS的迅速發(fā)展,并已逐漸形成云生態(tài)體系——以Docker、Kubernetes為核心,由Docker提供應(yīng)用級的主機(jī)抽象,Kubernetes提供應(yīng)用級的集群抽象。在此基礎(chǔ)上涌現(xiàn)了紅帽O(jiān)penShift等優(yōu)秀企業(yè)級PaaS產(chǎn)品。

本文將著重對Docker、Kubernetes、Openshift的發(fā)展歷史及架構(gòu)進(jìn)行分析,并分享“部署自研運(yùn)維系統(tǒng)到云平臺”的實(shí)踐經(jīng)驗(yàn)。

標(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ā)流程,為降低運(yùn)維成本、提高軟件安全和運(yùn)行穩(wěn)定等方面提供便利。容器技術(shù)不僅僅打造一個(gè)運(yùn)輸用的“集裝箱”,還保證軟件在容器內(nèi)能夠運(yùn)行,在操作系統(tǒng)上構(gòu)成“獨(dú)立的箱子”。這需要解決文件系統(tǒng)、網(wǎng)絡(luò)、硬件等多方面的問題。經(jīng)過長時(shí)間的發(fā)展,容器技術(shù)現(xiàn)已逐步成熟。使用容器技術(shù)后,開發(fā)者可以使用熟悉的編程語言開發(fā)軟件,之后用容器技術(shù)打包構(gòu)建,便可一鍵運(yùn)行在所有支持該容器技術(shù)的平臺上。

2.容器技術(shù)的典型代表——Docker架構(gòu)

Docker是一個(gè)構(gòu)建、發(fā)布、運(yùn)行分布式應(yīng)用的平臺,Docker平臺整體可以看成由Docker引擎(運(yùn)行環(huán)境+打包工具)、Docker Registry(API+生態(tài)系統(tǒng))兩部分組成。包括Docker Client、Docker daemon、Docker Image、Docker Container等部分。

其中Docker引擎可以分為守護(hù)進(jìn)程和客戶端兩大部分。Docker引擎的底層是各種操作系統(tǒng)以及云計(jì)算基礎(chǔ)設(shè)施,而上層則是各種應(yīng)用程序和管理工具,每層之間都是通過API來通信的。詳細(xì)介紹如下。

Docker Client是Docker提供命令行界面(CLI)工具,是用戶與Docker進(jìn)行交互的主要方式??蛻舳丝梢詷?gòu)建,運(yùn)行和停止應(yīng)用程序,還可以遠(yuǎn)程與Docker_Host進(jìn)行交互。

Docker daemon是服務(wù)器組件,以Linux后臺服務(wù)的方式運(yùn)行,是Docker最核心的后臺進(jìn)程。它負(fù)責(zé)響應(yīng)來自Docker Client的請求,然后將這些請求翻譯成系統(tǒng)調(diào)用完成容器管理操作。

Docker鏡像可以看作是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。

Docker容器就是Docker鏡像的運(yùn)行實(shí)例,是真正運(yùn)行項(xiàng)目程序、消耗系統(tǒng)資源、提供服務(wù)的地方。

Docker提供了應(yīng)用級的主機(jī)抽象,可以更容易地實(shí)現(xiàn)應(yīng)用的快速申請和部署。

容器時(shí)代的舵手Kubernetes

如果說Docker是容器時(shí)代的大船,Kubernetes就是指引船只的舵手。作為容器集群管理工具,Kubernetes有一套健壯的集群自恢復(fù)機(jī)制,包括容器的自動重啟、自動重調(diào)度以及自動備份甚至負(fù)載等。

1.Kubernetes的發(fā)展歷程

Kubernetes前身是谷歌大規(guī)模集群管理系統(tǒng)Brog,它基于容器技術(shù),實(shí)現(xiàn)資源管理的自動化,以及跨數(shù)據(jù)中心資源利用的最大化。Kubernetes于2015年正式對外發(fā)布,經(jīng)過4年多的發(fā)展,為容器編排提供強(qiáng)大的解決方案,成為云原生系統(tǒng)的重要支撐。

當(dāng)前,國內(nèi)外的很多企業(yè)都建立了基于Kubernetes的云平臺,如OpenShift、阿里云等。下面分別簡述阿里巴巴和美團(tuán)點(diǎn)評的云平臺發(fā)展實(shí)踐歷程。

阿里巴巴于2013年開始探索由容器替換虛擬機(jī),2018年開始自研容器調(diào)度系統(tǒng)向Kubernetes轉(zhuǎn)型,2019年阿里業(yè)務(wù)全面上云,2019年雙十一中,基于Kubernetes的生態(tài)體系支撐了阿里史上規(guī)模最大的集群。

美團(tuán)點(diǎn)評于2013年開始搭建云計(jì)算平臺,2016年基于Docker搭建自研容器管理平臺,2018年引入Kubernetes到云平臺中,提升了平臺的穩(wěn)定性和資源使用效率。

2.Kubernetes的架構(gòu)

在Kubernetes中,Service是分布式集群架構(gòu)的核心。它是一種抽象概念,每一個(gè)Service后端有多個(gè)Pod,所有的容器均在Pod中運(yùn)行。下圖是一個(gè)典型的Kubernetes架構(gòu)圖。

Kubernetes由兩種節(jié)點(diǎn)組成:Master節(jié)點(diǎn),為管理節(jié)點(diǎn);Node節(jié)點(diǎn),為容器運(yùn)行結(jié)點(diǎn)。

Service是架構(gòu)的核心,提供遠(yuǎn)程服務(wù),它的后端有多個(gè)Pod,每個(gè)容器均在Pod中運(yùn)行。一個(gè)Service可以橫跨多個(gè)Node,也可能一個(gè)Node里包含多個(gè)Service,一個(gè)Pod里也可以包含多個(gè)Container(容器)。

Pod是Kubernetes的最小調(diào)度單位,所以在我行實(shí)際應(yīng)用中,一般一個(gè)Pod中只部署一個(gè)容器,以提高穩(wěn)定性,降低風(fēng)險(xiǎn)。一個(gè)Label是一對鍵/值對,用來傳遞用戶定義的屬性。例如,可以用“Taihangboot”來標(biāo)記一個(gè)太行應(yīng)用。

Replication Controller,用來確保任意時(shí)間都有指定數(shù)量的Pod“副本”在運(yùn)行。如果為某個(gè)Pod創(chuàng)建了Replication Controller并且指定2個(gè)副本,它會創(chuàng)建2個(gè)Pod,并且持續(xù)監(jiān)控它們。

Kubernetes是強(qiáng)大的云原生體系工具,對容器進(jìn)行編排,實(shí)現(xiàn)了集群化的管理。

企業(yè)級PaaS平臺中的翹楚OpenShift

紅帽O(jiān)penShift平臺在Kubernetes的基礎(chǔ)上,提高了平臺運(yùn)行穩(wěn)定性,集成了Jeckins等工具,更易于實(shí)現(xiàn)Devops,可以為企業(yè)提供全面的應(yīng)用上云服務(wù)。

1.OpenShift的發(fā)展歷程

OpenShift是由紅帽公司推出的PaaS云計(jì)算平臺,它誕生于2011年,核心架構(gòu)采用自研容器編排平臺Gear。Kubernetes推出后,紅帽決定對OpenShift進(jìn)行重構(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)進(jìn)一步實(shí)現(xiàn)了混合云環(huán)境企業(yè)級服務(wù)的簡化和自動化,同時(shí)可以讓開發(fā)者通過云原生應(yīng)用實(shí)現(xiàn)創(chuàng)新并提高業(yè)務(wù)價(jià)值。

OpenShift在Kubernetes的基礎(chǔ)上擴(kuò)展提供了軟件定義網(wǎng)絡(luò)、軟件定義存儲、權(quán)限管理、企業(yè)級鏡像倉庫、統(tǒng)一入口路由、持續(xù)集成流程(S2/Jenkins統(tǒng)一管理控制臺、監(jiān)控日志等功能,形成覆蓋整個(gè)軟件生命周期的解決方案,提供了企業(yè)級的服務(wù)支持。當(dāng)前其提供三種產(chǎn)品:OpenShift Online、OpenShift Enterprise和OpenShift Origin。其中,OpenShift Online是面向普通開發(fā)者和小微企業(yè)的線上公有云平臺;OpenShift Enterprise是面向企業(yè)的私有云平臺;OpenShift Origin是一個(gè)開源項(xiàng)目,是構(gòu)成前兩個(gè)的基礎(chǔ)。

2.OpenShift的技術(shù)架構(gòu)

OpenShift平臺可以安裝于幾乎所有的基礎(chǔ)平臺上,例如裸機(jī)、虛擬機(jī)、私有云、公有云等。整個(gè)OpenShift平臺可以分為Container Storage、CoreOS、Kubernetets、Automated operations、Services等幾個(gè)層級。下面分別進(jìn)行介紹。

OpenShift平臺可以安裝于幾乎所有的基礎(chǔ)平臺上,例如裸機(jī)、虛擬機(jī)、私有云、公有云等。整個(gè)OpenShift平臺可以分為Container Storage、CoreOS、Kubernetets、Automated operations、Services等幾個(gè)層級。下面分別進(jìn)行介紹。

Container Storage是持久化的存儲結(jié)構(gòu),它為整個(gè)基于容器的環(huán)境提供存儲支持。CoreOS是Linux的一個(gè)發(fā)行版,提供容器執(zhí)行的基礎(chǔ)操作系統(tǒng)。Kubernetes即容器編排的調(diào)度平臺。Automated operations指的是對于集群上運(yùn)行的容器宿主機(jī)、Kubernetes集群和應(yīng)用等服務(wù),進(jìn)行自動化的更新、管理等功能。Services包含平臺所提供的具體服務(wù),如集群服務(wù)(監(jiān)控、擴(kuò)縮容、鏡像倉庫、日志系統(tǒng)),應(yīng)用服務(wù)(融合中間件、基礎(chǔ)軟件服務(wù)),Service Mesh(管理微服務(wù)應(yīng)用),開發(fā)服務(wù)(開發(fā)工具、自動構(gòu)建、持續(xù)集成、持續(xù)交付)等。

可以看出,OpenShift在Kubernetes的基礎(chǔ)上,提供了底層支持,擴(kuò)展了應(yīng)用功能,以提供更全面、更便捷的服務(wù)。

智能運(yùn)維系統(tǒng)上云實(shí)踐

智能運(yùn)維系統(tǒng)是一個(gè)全面的運(yùn)維平臺,可以實(shí)現(xiàn)監(jiān)控相關(guān)系統(tǒng)的主要運(yùn)行指標(biāo)、發(fā)現(xiàn)異常后匹配應(yīng)急方案、發(fā)起應(yīng)急操作及驗(yàn)證、系統(tǒng)配置、用戶管理等功能。

將該系統(tǒng)部署于OpenShift平臺簡要來說可分為3個(gè)步驟:創(chuàng)建容器、將生成的容器打好標(biāo)簽推送至鏡像倉庫、在OpenShift平臺拉取鏡像開始配置運(yùn)行。介紹如下。

1.創(chuàng)建容器

通過Dockerfile來組合基礎(chǔ)鏡像和軟件,Dockerfile中包含的內(nèi)容包括基本鏡像、要安裝的軟件包,要復(fù)制到容器中的軟件,網(wǎng)絡(luò)端口和掛載的存儲卷等信息。編寫好Dockerfile后,可通過運(yùn)行docker build命令來創(chuàng)建一個(gè)存儲在本地的容器鏡像。

2.將生成的容器打好標(biāo)簽推送至鏡像倉庫

使用docker tag命令向新容器鏡像添加標(biāo)簽,以標(biāo)識其在鏡像倉庫的位置。然后,通過運(yùn)行docker push命令將該鏡像推送到鏡像倉庫。

3.在OpenShift平臺配置運(yùn)行容器

在OpenShift平臺配置Deployment、Service、Router等運(yùn)行策略,即可從鏡像倉庫拉取相關(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ù)等的實(shí)現(xiàn)也具有天然的優(yōu)勢,在持續(xù)集成、持續(xù)部署上更加高效、安全,極大的提高了生產(chǎn)效率,將在企業(yè)數(shù)字化轉(zhuǎn)型中發(fā)揮巨大的作用。

最后

作為一個(gè)奮戰(zhàn)在一線的運(yùn)維人員,經(jīng)常遇到集群擴(kuò)容、環(huán)境遷移、頻繁的變更等等一系列繁雜的任務(wù)與問題,處理起來費(fèi)時(shí)且容易出錯(cuò)。在接觸到云原生應(yīng)用后,被其標(biāo)準(zhǔn)化、輕量、高效的運(yùn)行、部署模式所吸引,感受到應(yīng)用上云對運(yùn)維方式帶來的巨大改變,故障自愈、一鍵遷移、一鍵部署等都輕易實(shí)現(xiàn),隨后對各個(gè)技術(shù)的官網(wǎng)文檔、相關(guān)書籍、網(wǎng)絡(luò)博客進(jìn)行了研究,形成了本文,希望能對未來的系統(tǒng)建設(shè)添磚加瓦。
責(zé)任編輯:tzh

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 云計(jì)算
    +關(guān)注

    關(guān)注

    39

    文章

    7678

    瀏覽量

    137032
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7449

    瀏覽量

    88465
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    491

    瀏覽量

    22015
收藏 人收藏

    評論

    相關(guān)推薦

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團(tuán)隊(duì)(被 VMWare 收購)開源的 Kubernetes 集群備份、遷移工具。
    的頭像 發(fā)表于 08-05 15:43 ?295次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b>集群

    risc-v的發(fā)展歷史

    RISC-V的發(fā)展歷史可以追溯到2006年左右,當(dāng)時(shí)David Patterson和其他研究者開始探索創(chuàng)建一個(gè)開放和可擴(kuò)展的指令集架構(gòu)(ISA)。以下是RISC-V發(fā)展的主要里程碑:
    發(fā)表于 07-29 17:20

    Jtti:Docker會替代調(diào)虛機(jī)嗎

    Docker是計(jì)算虛擬化的一種方式,和使用虛擬機(jī)進(jìn)行虛擬化是類似的。由于近幾年Docker技術(shù)的流行和發(fā)展。所以單獨(dú)介紹一下Docker。首先先回答下面一個(gè)問題。 1.
    的頭像 發(fā)表于 07-12 14:38 ?219次閱讀
    Jtti:<b class='flag-5'>Docker</b>會替代調(diào)虛機(jī)嗎

    關(guān)于Docker 的清理命令集錦

    這篇文章主要介紹了Docker 清理命令集錦,需要的朋友可以參考下 復(fù)制代碼代碼如下: docker kill $(docker ps -a -q) ?刪除所有已經(jīng)停止的容器 復(fù)制代碼代碼如下
    的頭像 發(fā)表于 06-13 15:56 ?275次閱讀

    精通Docker網(wǎng)絡(luò):Bridge驅(qū)動深度解析

    除了使用 docker0 網(wǎng)橋外,用戶還可以使用自定義的網(wǎng)橋,然后通過 --bridge=BRIDGE 參數(shù)傳遞給 docker daemon。
    的頭像 發(fā)表于 03-31 15:58 ?1307次閱讀
    精通<b class='flag-5'>Docker</b>網(wǎng)絡(luò):Bridge驅(qū)動深度<b class='flag-5'>解析</b>

    ARM平臺實(shí)現(xiàn)Docker容器技術(shù)

    什么是Docker? (1)Docker架構(gòu) Docker是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windo
    的頭像 發(fā)表于 03-07 13:48 ?685次閱讀
    ARM平臺實(shí)現(xiàn)<b class='flag-5'>Docker</b>容器技術(shù)

    如何利用樹莓派安裝DockerDocker-compose呢?

    本文主要演示了樹莓派如何安裝DockerDocker-compose的過程。
    的頭像 發(fā)表于 12-14 16:19 ?2579次閱讀
    如何利用樹莓派安裝<b class='flag-5'>Docker</b>和<b class='flag-5'>Docker</b>-compose呢?

    DIPIPM?的歷史及未來發(fā)展(3)

    DIPIPM?的歷史及未來發(fā)展(3)
    的頭像 發(fā)表于 12-04 17:37 ?503次閱讀
    DIPIPM?的<b class='flag-5'>歷史</b>及未來<b class='flag-5'>發(fā)展</b>(3)

    docker核心組件有哪些

    Docker 是一種開源的容器化平臺,它能夠?qū)崿F(xiàn)將應(yīng)用程序及其依賴項(xiàng)打包到一個(gè)可移植的容器中,從而實(shí)現(xiàn)快速、可重復(fù)、可擴(kuò)展的部署和管理。Docker 的核心組件包括 Docker Engine
    的頭像 發(fā)表于 11-23 09:47 ?1716次閱讀

    docker進(jìn)入容器的方法有哪些

    Docker是一種流行的容器化平臺,它能夠快速構(gòu)建、交付和運(yùn)行應(yīng)用程序。在使用Docker時(shí),我們經(jīng)常需要進(jìn)入容器進(jìn)行調(diào)試、管理和運(yùn)行命令等操作。本文將詳細(xì)介紹Docker進(jìn)入容器的各種方法,包括
    的頭像 發(fā)表于 11-23 09:45 ?1w次閱讀

    如何啟動本機(jī)docker服務(wù)

    Docker是一個(gè)開源項(xiàng)目,可以幫助開發(fā)者打包應(yīng)用程序及其依賴,并且能夠?qū)⑵渥鳛楠?dú)立的容器來運(yùn)行。本文將詳細(xì)介紹如何在本機(jī)上啟動Docker服務(wù)。 第一步:安裝Docker 在開始之前,首先需要
    的頭像 發(fā)表于 11-23 09:43 ?1830次閱讀

    linux關(guān)閉docker的命令

    在 Linux 系統(tǒng)中,關(guān)閉 Docker 的操作可以通過以下多種方式進(jìn)行。本文將詳細(xì)講解每一種方式,并提供示例代碼和命令,以幫助讀者更好地理解和實(shí)踐。 使用 docker 命令 最常用的方法
    的頭像 發(fā)表于 11-23 09:39 ?2641次閱讀

    docker exec命令的使用方法

    Docker是一種開源的容器化平臺,可以讓開發(fā)人員在容器中打包和運(yùn)行應(yīng)用程序。它提供了一種快速、可靠和一致的方式來構(gòu)建、部署和運(yùn)行應(yīng)用程序。Docker exec命令是Docker提供的一個(gè)非常
    的頭像 發(fā)表于 11-23 09:33 ?1480次閱讀

    docker部署mysql的壞處

    Docker 是一種虛擬化技術(shù),它允許開發(fā)人員在容器內(nèi)打包應(yīng)用程序及其所有依賴項(xiàng),從而實(shí)現(xiàn)在不同環(huán)境中運(yùn)行相同的應(yīng)用程序的能力。然而,在使用 Docker 部署 MySQL 時(shí),也存在一些潛在
    的頭像 發(fā)表于 11-23 09:29 ?1297次閱讀

    docker微服務(wù)架構(gòu)實(shí)戰(zhàn)

    隨著云計(jì)算和容器化技術(shù)的快速發(fā)展,微服務(wù)架構(gòu)在軟件開發(fā)領(lǐng)域中變得越來越流行。微服務(wù)架構(gòu)將一個(gè)大型的軟件應(yīng)用拆分成多個(gè)小型的、獨(dú)立部署的服務(wù),每個(gè)服務(wù)負(fù)責(zé)獨(dú)立的業(yè)務(wù)功能。其中,Docker
    的頭像 發(fā)表于 11-23 09:26 ?585次閱讀