自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從容器和Kubernetes技術(shù)看現(xiàn)代云計(jì)算的發(fā)展軌跡

云計(jì)算
隨著計(jì)算模型(computing models)的不斷發(fā)展衍化,我們?cè)?jīng)經(jīng)歷過(guò)幾次計(jì)算模型解決方案的轉(zhuǎn)變?;仡櫾谶^(guò)去的10年,我們從虛擬化技術(shù)的角度可以很清楚看到這種變化的過(guò)程。受益于虛擬化技術(shù)的發(fā)展,我們對(duì)整體資源的使用效率有了巨大的提升,與此同時(shí),我們工作的時(shí)間價(jià)值和為了交付服務(wù)所做的重復(fù)性工作得到了相應(yīng)減少。

在接下來(lái)的幾周,我們將會(huì)發(fā)布一個(gè)新的系列博客,在這個(gè)系列中,我們想闡述Google對(duì)于容器技術(shù)的一些觀點(diǎn),此外我們還會(huì)和讀者分享Google在過(guò)去十年間,在容器中運(yùn)行服務(wù)的一些經(jīng)驗(yàn)。我們是一支由Google的產(chǎn)品經(jīng)理、一線技術(shù)員以及架構(gòu)師組成的團(tuán)隊(duì),團(tuán)隊(duì)共同的目標(biāo)是要幫助讀者了解“容器技術(shù)革命”如何能更有效的構(gòu)建和運(yùn)行服務(wù)。這次我們邀請(qǐng)了“Google 云平臺(tái)全球解決方案”的專家Miles Ward來(lái)做分享,作為這一系列博客的開(kāi)篇。

 

各位好!歡迎來(lái)到我們新的系列博客,在這個(gè)系列中,我們將要為大家介紹當(dāng)今計(jì)算模型創(chuàng)新中最時(shí)髦的領(lǐng)域之一:容器化技術(shù)(containerization)。

 

你可能會(huì)有很多疑惑:容器到底是什么,它究竟怎樣工作?Docker、Kubernetes到底指的是什么,Google Container Engine以及Managed VM又有什么用?它們之間有何關(guān)聯(lián),我們?nèi)绾瓮ㄟ^(guò)容器來(lái)構(gòu)建一個(gè)功能強(qiáng)大的服務(wù),并且能讓它們?cè)谏a(chǎn)環(huán)境的大規(guī)模集群中使用? 用戶采用這種技術(shù),怎樣才能獲得商業(yè)價(jià)值?好了,我們不再賣關(guān)子,接下來(lái)就直入主題。我們首先會(huì)對(duì)容器技術(shù)進(jìn)行具體的介紹,之后講述容器技術(shù)究竟如何使我們更好地進(jìn)行工作。

 

隨著計(jì)算模型(computing models)的不斷發(fā)展衍化,我們?cè)?jīng)經(jīng)歷過(guò)幾次計(jì)算模型解決方案的轉(zhuǎn)變?;仡櫾谶^(guò)去的10年,我們從虛擬化技術(shù)的角度可以很清楚看到這種變化的過(guò)程。受益于虛擬化技術(shù)的發(fā)展,我們對(duì)整體資源的使用效率有了巨大的提升,與此同時(shí),我們工作的時(shí)間價(jià)值和為了交付服務(wù)所做的重復(fù)性工作得到了相應(yīng)減少。隨著多租戶、基于API的管理以及公有云計(jì)算技術(shù)的到來(lái),這一趨勢(shì)更是被不斷加強(qiáng)。這其中,最關(guān)鍵的突破就是資源使用方式所發(fā)生的變化。通過(guò)虛擬化的方式,我們可以在幾分鐘之內(nèi),虛擬出一個(gè)小的、獨(dú)立的、隨需隨用CPU內(nèi)核,這個(gè)虛擬的CPU內(nèi)核感覺(jué)像是直接運(yùn)行在物理機(jī)之外。那么問(wèn)題來(lái)了,當(dāng)你僅僅需要使用一小部分資源的時(shí)候,是否還有必要虛擬出一整臺(tái)機(jī)器?

 

Google在很早的時(shí)候就已經(jīng)遇到了這個(gè)問(wèn)題:我們需要更快、更便宜的方式發(fā)布軟件,并且支撐服務(wù)運(yùn)行所需要的計(jì)算資源的規(guī)模也以前從未有過(guò)的,那么這一問(wèn)題應(yīng)該如何解決?為了滿足這一需求,我們需要對(duì)已有資源進(jìn)行更高級(jí)別的抽象,使得服務(wù)可以通過(guò)更細(xì)的粒度對(duì)資源進(jìn)行控制。為此,我們?yōu)長(zhǎng)inux內(nèi)核添加了新的技術(shù),這便是眾所周知的cgroup,我們通過(guò)這一技術(shù)來(lái)對(duì)服務(wù)運(yùn)行時(shí)環(huán)境進(jìn)行隔離,這種被隔離起來(lái)的運(yùn)行時(shí)環(huán)境就被稱為容器。這是一種新的虛擬化技術(shù),通過(guò)這一技術(shù),我們簡(jiǎn)化了Google全部服務(wù)運(yùn)行所需要的底層OS環(huán)境。之后的幾年一直到現(xiàn)在,容器相關(guān)的技術(shù)不斷發(fā)展,隨著Docker的出現(xiàn),這一技術(shù)的影響得到了進(jìn)一步擴(kuò)大,Docker也正是通過(guò)使用這一技術(shù)為基于容器的應(yīng)用創(chuàng)建了一種可互操作的格式(interoperable format)。

為何使用容器?

容器技術(shù)究竟提供了哪些虛擬機(jī)所沒(méi)有的?

簡(jiǎn)化部署(Simple deployment):容器技術(shù)可以將你的應(yīng)用打包成單一地址訪問(wèn)的、registry存儲(chǔ)的(registry-stored)、僅通過(guò)一行命令就可以部署完成的組件。不論你想將服務(wù)部署在哪里,容器都可以從根本上簡(jiǎn)化你的服務(wù)部署工作。

 

快速可用(Rapid availability):容器技術(shù)對(duì)操作系統(tǒng)的資源進(jìn)行再次抽象,而并非對(duì)整個(gè)物理機(jī)資源進(jìn)虛擬化,通過(guò)這種方式,打包好的服務(wù)可以在1/20秒的時(shí)間內(nèi)啟動(dòng),相比之下,可能需要一分鐘的時(shí)間才能啟動(dòng)一臺(tái)虛擬機(jī)。

 

微服務(wù)化(Leverage microservices):容器可以允許開(kāi)發(fā)者和系統(tǒng)管理人員對(duì)計(jì)算資源進(jìn)行進(jìn)一步細(xì)分,如果一個(gè)小型的虛擬機(jī)所提供的資源相對(duì)于服務(wù)運(yùn)行所需要的資源來(lái)說(shuō)過(guò)于龐大,或者對(duì)于你的系統(tǒng)而言,一次性地?cái)U(kuò)展出一臺(tái)虛擬機(jī)會(huì)需要很多的工作量,那么容器可能會(huì)很好的改善這一狀況。

 

容器技術(shù)的這些優(yōu)點(diǎn)能為你的工作帶來(lái)哪些幫助?

最明顯的一個(gè)方面就是:開(kāi)發(fā)者只需要通過(guò)他們的筆記本電腦就能同時(shí)運(yùn)行多個(gè)容器,并進(jìn)行方便快速的服務(wù)部署。雖然在一臺(tái)筆記本電腦上運(yùn)行多個(gè)虛擬機(jī)也是可以的,但是顯然通過(guò)容器的方式可以更快速、簡(jiǎn)單、輕量級(jí)。

 

不僅如此,容器還可以使得服務(wù)發(fā)行版的管理變得更加容易,發(fā)布一個(gè)新的容器版本僅僅需要一個(gè)單獨(dú)的命令就能完成。同時(shí),測(cè)試工作也變得更加容易,在公有云平臺(tái)中,虛擬機(jī)的計(jì)費(fèi)方式可能至少以10分鐘為單位(或者,一整個(gè)小時(shí)?),如果僅運(yùn)行單個(gè)測(cè)試程序,由于測(cè)試所消費(fèi)的資源可能并不多。但是,如果你每天要運(yùn)行上千個(gè)測(cè)試驅(qū)動(dòng)導(dǎo)向的程序,資源成本就可能直線上升。如果改用容器進(jìn)行同樣的測(cè)試工作,你只需要用同樣的資源消耗(與使用一臺(tái)虛擬機(jī)相同的資源消耗)來(lái)完成這上千個(gè)測(cè)試,這將會(huì)大大節(jié)省你的服務(wù)運(yùn)行成本。

 

另外一個(gè)重要的優(yōu)勢(shì)就是組合特性,采用容器的方式進(jìn)行部署,整個(gè)系統(tǒng)會(huì)變得易于組合,特別是對(duì)于那些需要使用到開(kāi)源軟件的系統(tǒng)。對(duì)于系統(tǒng)管理人員,以下的工作可能會(huì)使人望而卻步:安裝和配置MySQL、Memcatched、MongoDB、Hadoop、GlusterFS、RabbitMQ、Node.js、Nginx等等,之后再將這些軟件封裝起來(lái),為服務(wù)提供一個(gè)運(yùn)行平臺(tái)。然而,這些復(fù)雜的工作完全可以通過(guò)啟動(dòng)幾個(gè)容器來(lái)完成:先將這些服務(wù)封裝在對(duì)應(yīng)的容器中,之后結(jié)合一些腳本使這些容器按照要求相互協(xié)作,這樣操作不僅可以簡(jiǎn)化部署難度還可以降低操作風(fēng)險(xiǎn)。

 

如果你想按照前面所描述的過(guò)程構(gòu)建一個(gè)服務(wù)平臺(tái),可能會(huì)有許多容易出錯(cuò)的地方,整個(gè)配制過(guò)程也需要具備很專業(yè)的知識(shí), 中間可能還會(huì)有許多重復(fù)的勞動(dòng)。因此,我們可以先將核心的容器組件以規(guī)范的方式來(lái)實(shí)現(xiàn),之后將它們添加在公共的registry服務(wù)中。這樣其他用戶就可以通過(guò)registry服務(wù)隨時(shí)獲得所需要的容器,擁有高質(zhì)量組件的容器生態(tài)系統(tǒng)就這樣被構(gòu)建起來(lái)。

 

在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi),容器技術(shù)最重要的價(jià)值就是為不同的主機(jī)上運(yùn)行服務(wù)提供一個(gè)輕便的、一致的格式。例如,如果你今天要構(gòu)建一個(gè)服務(wù),你可能先要接入裸機(jī)服務(wù)器,并且使用虛擬化之后的預(yù)先定義好的基礎(chǔ)設(shè)施,或者直接使用共有或者私有的云服務(wù)平臺(tái),當(dāng)然也有許多PaaS提供商可以供你選擇。然而,你為了使自己服務(wù)能夠運(yùn)行在不同的服務(wù)平臺(tái)上,可能需要通過(guò)多種不通的方式對(duì)服務(wù)進(jìn)行打包!而如果通過(guò)在容器格式進(jìn)行標(biāo)準(zhǔn)化的操作,這些不同的計(jì)算模型的提供商們就可以給用戶提供一種獨(dú)特的交付體驗(yàn),這可以允許用戶方便地對(duì)工作負(fù)載地進(jìn)行遷移,用戶可以選擇將工作任務(wù)部署在最便宜和最快的平臺(tái)上,避免局限于單一的平臺(tái)提供商。
 

Docker

網(wǎng)上已經(jīng)有很多的對(duì)于容器技術(shù)和Docker相關(guān)技術(shù)如何實(shí)現(xiàn)的細(xì)致的介紹文檔,特別是這里、這里這里。這些文檔已經(jīng)足夠能說(shuō)明,Docker是一個(gè)“很棒的解決方案”,也就是說(shuō),目前可能還沒(méi)有其它方案能夠和它相媲美。

 

容器技術(shù)增強(qiáng)了對(duì)資源控制的粒度,這一點(diǎn)確實(shí)有很高的實(shí)用價(jià)值,但是對(duì)于那些需要上千臺(tái)服務(wù)器一起來(lái)運(yùn)行的服務(wù)而言,單純的容器技術(shù)并沒(méi)有從本質(zhì)上提高任何工作負(fù)載的運(yùn)行效率。如今的Docker僅僅是為了在單一的機(jī)器操作而設(shè)計(jì),于是我們又可以提出一連串的問(wèn)題:這些在集群上所運(yùn)行的容器和容器中運(yùn)行的工作負(fù)載應(yīng)該被如何分配和協(xié)調(diào),它們?cè)鯓硬拍馨凑召Y源的消耗量來(lái)進(jìn)行管理?它們?nèi)绾卧诙嘧鈶舻木W(wǎng)絡(luò)環(huán)境下進(jìn)行運(yùn)行?它們的安全性能又該如何被保證?

 

或許從系統(tǒng)設(shè)計(jì)的角度來(lái)看,我們可以提出一個(gè)更本質(zhì)的問(wèn)題:當(dāng)前我們所討論的到底是不是正確的資源抽象方式?與我交流過(guò)的大多數(shù)開(kāi)發(fā)者以及公司的贊助商,他們對(duì)在指定的機(jī)器上的指定容器并不感興趣,他們真正想要自己的服務(wù)如何能被啟動(dòng)運(yùn)行,產(chǎn)生價(jià)值,并且易于監(jiān)管和維護(hù),他們并不想了解全部的瑣碎細(xì)節(jié)(至少他們希望這樣),例如指定個(gè)機(jī)器上的指定個(gè)容器到底在做什么。
 

Kubernetes

Google通過(guò)產(chǎn)品的不斷迭代解決了這個(gè)問(wèn)題:我們構(gòu)建了一個(gè)管理系統(tǒng),它可以用來(lái)管理集群、網(wǎng)絡(luò)以及命名系統(tǒng)。這個(gè)管理系統(tǒng)的第一個(gè)版本被稱為Brog,它的后續(xù)的版本稱為Omega。通過(guò)這個(gè)管理系統(tǒng),我們可以在Google的大規(guī)模的集群資源上使用容器技術(shù)。我們現(xiàn)在每秒會(huì)啟動(dòng)大約7000個(gè)容器,每周可能會(huì)超過(guò)20億個(gè)容器。我們利用Google在容器技術(shù)上的實(shí)踐經(jīng)驗(yàn)和技術(shù)積累,構(gòu)建了Kubernetes(在論壇上有些時(shí)候被簡(jiǎn)寫為K8s)。

 

Kubernetes從另一個(gè)角度對(duì)資源進(jìn)行抽象,它讓開(kāi)發(fā)人員和管理人員共同著眼于服務(wù)的行為和性能的提升,而不是僅僅關(guān)注對(duì)單一的組件或者是基礎(chǔ)資源。

 

那么Kubernetes集群到底提供了哪些單一容器所沒(méi)有功能?它主要關(guān)注的是對(duì)服務(wù)級(jí)別的控制而并非僅僅是對(duì)容器級(jí)別的控制,Kubernetes提供了一種“機(jī)智”的管理方式,它將服務(wù)看成一個(gè)整體。在Kubernete的解決方案中,一個(gè)服務(wù)甚至可以自我擴(kuò)展,自我診斷,并且容易升級(jí)。例如,在Google中,我們使用機(jī)器學(xué)習(xí)技術(shù)來(lái)保證每個(gè)運(yùn)行的服務(wù)的當(dāng)前狀態(tài)都是最高效的。

 

如果說(shuō)單一容器能夠幫助開(kāi)發(fā)者減少部署工作的繁瑣,那么Kubernetes就可以最大化的減少團(tuán)隊(duì)開(kāi)發(fā)過(guò)程中協(xié)同工作的復(fù)雜性。Kubernets可以讓團(tuán)隊(duì)以容器的方式將服務(wù)結(jié)合在一起,并且讓這些容器按照指定的規(guī)則來(lái)進(jìn)行部署,以確保服務(wù)能夠正確運(yùn)行。在傳統(tǒng)的方式下,由于缺乏隔離性,服務(wù)之間或服務(wù)之間的各個(gè)部分很容易產(chǎn)生相互干擾,但是通過(guò)Kubernetes,這些矛盾可以從系統(tǒng)的角度上被避免,在Google,通過(guò)使用這種增強(qiáng)的協(xié)同工作的方式,開(kāi)發(fā)者的生產(chǎn)力得以提高,服務(wù)的可用性也進(jìn)一步增強(qiáng),這也使得在大規(guī)模的集群上的部署變得更加敏捷。

 

然而我們的技術(shù)仍然處于早期的發(fā)展階段。目前,Kubernetes已經(jīng)被許多客戶和公司的知名團(tuán)隊(duì)所采用,包括RedHat ,VMware,CoreOS,以及Mesosphere 等等。這些公司迫切地希望通過(guò)Kubernete進(jìn)行的規(guī)?;渴饋?lái)幫助他們的客戶提取出容器技術(shù)的商業(yè)價(jià)值。
 

Container Engine

Google Container Engine在Google的云平臺(tái)上引入了“容器即服務(wù)”的理念?;贙ubernetes的技術(shù),容器引擎為開(kāi)發(fā)者提供了快速構(gòu)建和運(yùn)行容器的方法,此外,容器引擎還可以對(duì)容器進(jìn)行部署、管理、并且使容器按著設(shè)定的邊界進(jìn)行擴(kuò)展。在接下來(lái)的文章中我們會(huì)對(duì)容器引擎進(jìn)行更多的介紹。
 

Deployment options

我們可以看到,容器化技術(shù)已經(jīng)成為了計(jì)算模型演化的一個(gè)開(kāi)端,Google在這場(chǎng)技術(shù)革命中扮演重著要的角色。隨著讀者開(kāi)始逐漸接觸容器,并對(duì)容器部署方式了解不斷深入,在實(shí)際服務(wù)部署中,可以對(duì)下面幾種方式進(jìn)行調(diào)研,并從中選出最適合的一種:

 

如果你打算運(yùn)行一個(gè)被管理的集群或者啟動(dòng)幾十個(gè)容器,使用Google Container Engine試一試。如果你想要在共有的基礎(chǔ)設(shè)施上或者是自己的系統(tǒng)中構(gòu)建自己的集群,可以使用Kubernetes來(lái)操作。想要在已經(jīng)被管理好的基礎(chǔ)設(shè)施上運(yùn)行一個(gè)容器,可以嘗試使用Google App Engine或者是Managed VMs。

原文鏈接:An introduction to containers, Kubernetes, and the trajectory of modern cloud computing

責(zé)任編輯:林師授 來(lái)源: dockerone.com
相關(guān)推薦

2015-01-16 10:41:13

容器技術(shù)KubernetesDocker

2020-01-16 16:35:12

云計(jì)算容器開(kāi)放

2023-12-25 15:10:22

云計(jì)算數(shù)字化轉(zhuǎn)型云服務(wù)轉(zhuǎn)型

2015-06-05 09:27:14

2013-03-28 12:02:11

云計(jì)算大數(shù)據(jù)施耐德

2022-04-15 15:03:42

云計(jì)算容器Linux

2013-10-08 11:16:55

谷歌云計(jì)算

2018-08-10 08:46:20

2020-07-02 10:23:59

云計(jì)算云安全數(shù)據(jù)

2010-10-09 14:37:43

云操作系統(tǒng)

2010-04-02 16:41:26

云計(jì)算

2012-01-13 13:51:18

2010-09-01 09:14:23

Effiproz

2016-09-18 19:42:24

2016-06-13 13:06:49

云計(jì)算云存儲(chǔ)

2023-08-23 15:18:06

云計(jì)算容器

2017-10-25 12:04:55

2023-04-04 07:25:48

云計(jì)算技術(shù)ESG

2021-04-09 11:19:11

云計(jì)算云計(jì)算產(chǎn)業(yè)云應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)