云計算”這個詞,相信大家都非常熟悉了蛤奢。
作為IT行業(yè)的熱門技術(shù)鬼癣,它頻繁出現(xiàn)在各大媒體的新聞報道中。BAT這樣的互聯(lián)網(wǎng)企業(yè)啤贩,也經(jīng)常把它掛在嘴邊待秃。
相信很多人都想學習云計算,跟上技術(shù)潮流痹屹。如果對云計算有一定了解的話章郁,應該會或多或少地聽到這些名詞——OpenStack、Hypervisor志衍、KVM暖庄、Docker、K8S...
這些名詞楼肪,全部都屬于云計算的范疇培廓。
對于自學的初學者來說,想要理解這些名詞的具體含義春叫,還有它們之間的關(guān)系肩钠,并不是一件容易的事情泣港。
雖然互聯(lián)網(wǎng)上有很多的資料,但是雜亂無章价匠、晦澀難懂当纱,對新人很不友好,容易讓人暈頭轉(zhuǎn)向踩窖,甚至打退堂鼓坡氯。
所以,小棗君今天這篇文章洋腮,作為云計算的入門第一課廉沮,將給大家做一個通俗易懂的宏觀介紹,重點解釋最主要的幾個名詞徐矩,和它們之間的關(guān)系,希望對大家入門有所幫助叁幢。
什么是云計算
在介紹那些古怪名詞之前滤灯,我先簡單介紹一下云計算。
以前電腦被發(fā)明的時候曼玩,還沒有網(wǎng)絡鳞骤,每個電腦(PC),就是一個單機黍判。
這臺單機豫尽,包括CPU、內(nèi)存顷帖、硬盤美旧、顯卡等硬件。用戶在單機上贬墩,安裝操作系統(tǒng)和應用軟件榴嗅,完成自己的工作。
后來陶舞,有了網(wǎng)絡(Network)嗽测,單機與單機之間,可以交換信息肿孵,協(xié)同工作唠粥。
再后來,單機性能越來越強停做,就有了服務器(Server)晤愧。人們發(fā)現(xiàn),可以把一些服務器集中起來蛉腌,放在機房里养涮,然后讓用戶通過網(wǎng)絡葵硕,去訪問和使用機房里的計算機資源。
再再后來贯吓,小型網(wǎng)絡變成了大型網(wǎng)絡懈凹,就有了互聯(lián)網(wǎng)(Internet)。小型機房變成了大型機房悄谐,就有了IDC(Internet Data Center卵牍,互聯(lián)網(wǎng)數(shù)據(jù)中心)。
當越來越多的計算機資源和應用服務(Application欺栗,例如看網(wǎng)頁屁药,下電影)被集中起來,就變成了——“云計算(Cloud Computing)”情屹。無數(shù)的大型機房坪仇,就成了“云端”。
▲云計算
是不是覺得太簡單垃你?別急椅文,開始深入。
云計算的道理是簡單的惜颇,說白了皆刺,就是把計算機資源集中起來,放在網(wǎng)絡上凌摄。但是羡蛾,云計算的實現(xiàn)方式,就復雜了锨亏。
舉個例子痴怨,如果你只是在公司小機房擺了一個服務器,開個FTP下載服務器予,然后用于幾個同事之間的電影分享腿箩,當然是很簡單的。
如果是“雙11”的淘寶購物節(jié)劣摇,全球幾十億用戶訪問阿里巴巴的淘寶網(wǎng)站珠移,單日幾十PB(1PB=1024TB=1024×1024GB)的訪問量,每秒幾百GB的流量……這個末融,就不是幾根網(wǎng)線幾臺服務器能解決的了钧惧。
需要設(shè)計一個超大容量、超高并發(fā)(同時訪問)勾习、超快速度浓瞪、超強安全的云計算系統(tǒng),才能滿足業(yè)務平穩(wěn)運行的要求巧婶。
這才是云計算的復雜之處乾颁。
剛才說了涂乌,我們把計算機資源,放在云端英岭。這個計算機資源湾盒,實際上,分為好幾種層次:
第一層次诅妹,是最底層的硬件資源罚勾,主要包括CPU(計算資源),硬盤(存儲資源)吭狡,還有網(wǎng)卡(網(wǎng)絡資源)等尖殃。
第二層次,要高級一些划煮,我不打算直接使用CPU送丰、硬盤、網(wǎng)卡弛秋,我希望你把操作系統(tǒng)(例如Windows器躏、Linux)裝好,把數(shù)據(jù)庫軟件裝好铐懊,我再來使用。
第三層次瞎疼,更高級一些科乎,你不但要裝好操作系統(tǒng)這些基本的,還要把具體的應用軟件裝好贼急,例如FTP服務端軟件茅茂、在線視頻服務端軟件等,我可以直接使用服務太抓。
這三種層次空闲,就是大家經(jīng)常聽到的IaaS、Paas走敌、SaaS碴倾。
SaaS: Software-as-a-Service(軟件即服務)
PaaS: Platform-as-a-Service(平臺即服務)
IaaS: Infrastructure-as-a-Service(基礎(chǔ)設(shè)施即服務)
再補一張圖,可能更直觀:
目前主流的云計算服務提供商掉丽,例如亞馬遜AWS跌榔、阿里云、華為云捶障,說白了僧须,都是為大家提供以上三個層次的云資源。你想要什么项炼,它們就提供什么担平。
繼續(xù)示绊,繼續(xù)。
這么多樣化多層次的云計算服務暂论,阿里面褐、華為們又是怎么提供的呢?
難道說空另,人工安排盆耽?——
如果你要八核CPU、16GB內(nèi)存扼菠、500GB硬盤的服務器摄杂,阿里臨時安排工程師幫你組裝?如果你要裝CentOS 7.2(一種類Linux操作系統(tǒng))循榆,MySQL 5.5.60(一種數(shù)據(jù)庫系統(tǒng))析恢,阿里也臨時讓工程師幫你安裝配置?
這顯然是不可能的秧饮,耗不起人力映挂,也等不起時間。
于是盗尸,就有了各種軟件和平臺柑船,負責對資源進行調(diào)用和管理。
什么是虛擬化
如果要對物理資源進行管理泼各,第一步鞍时,就是“虛擬化”。
虛擬化是云計算的基礎(chǔ)扣蜻。簡單來說逆巍,虛擬化就是在一臺物理服務器上,運行多臺“虛擬服務器”莽使。這種虛擬服務器锐极,也叫虛擬機(VM,Virtual Machine)芳肌。
從表面來看灵再,這些虛擬機都是獨立的服務器,但實際上亿笤,它們共享物理服務器的CPU檬嘀、內(nèi)存、硬件责嚷、網(wǎng)卡等資源鸳兽。
物理機,通常稱為“宿主機(Host)”罕拂。虛擬機揍异,則稱為“客戶機(Guest)”全陨。
誰來完成物理資源虛擬化的工作呢?
就是大名鼎鼎的?Hypervisor衷掷。
Hypervisor辱姨,漢譯過來是“超級監(jiān)督者”,也叫做VMM(Virtual Machine Monitor戚嗅,虛擬機監(jiān)視器)雨涛。它不是一款具體的軟件,而是一類軟件的統(tǒng)稱懦胞。
Hypervisor分為兩大類:
第一類替久,hypervisor直接運行在物理機之上。虛擬機運行在hypervisor之上躏尉。第二類蚯根,物理機上安裝正常的操作系統(tǒng)(例如Linux或Windows),然后在正常操作系統(tǒng)上安裝hypervisor胀糜,生成和管理虛擬機颅拦。
像VMware、KVM教藻、Xen距帅、Virtual Box,都屬于Hypervisor括堤。
VMware大家應該很熟悉碌秸,就是VMware Workstation。學習Linux的話痊臭,很多人都是在Windows系統(tǒng)下安裝WMware哮肚,然后創(chuàng)建Linux虛擬機登夫。
但是广匙,真正厲害的,是KVM(kernel-based virtual machine恼策,基于Linux內(nèi)核的虛擬機)鸦致。它是目前最熱門最受追捧的虛擬化方案。
KVM這樣的Hypervisor軟件涣楷,實際上是提供了一種虛擬化能力分唾,模擬CPU的運行,更為底層狮斗。但是它的用戶交互并不良好绽乔,不方便使用。
于是碳褒,為了更好地管理虛擬機折砸,就需要OpenStack這樣的云管理平臺看疗。
關(guān)于OpenStack,我之前曾經(jīng)介紹過(鏈接)睦授。它有點像個商店两芳,負責管理商品(計算資源、存儲資源去枷、網(wǎng)絡資源等)怖辆,賣給用戶,但它本身不制造商品(不具備虛擬化能力)删顶,它的商品竖螃,來自于KVM。當然翼闹,如果不用KVM斑鼻,也可以用Xen等其它hypervisor。
OpenStack的管理界面猎荠,比命令行好多了吧坚弱?
請記住,上面所說的幾個概念关摇,包括VM荒叶、KVM、OpenStack等输虱,都主要屬于IaaS(基礎(chǔ)設(shè)施即服務)些楣。這個不難理解吧?
容器VS虛擬機
繼續(xù)往下說宪睹。
那么愁茁,容器、Docker亭病、K8S鹅很,又是什么呢?
根據(jù)前文所說的虛擬化方式罪帖,人們在使用一段時間后發(fā)現(xiàn)促煮,它存在一些問題:
不同的用戶,有時候只是希望運行各自的一些簡單程序整袁,跑一個小進程菠齿。為了不相互影響,就要建立虛擬機坐昙。如果建虛擬機绳匀,顯然浪費就會有點大,而且操作也比較復雜,花費時間也會比較長疾棵。
而且盗飒,有的時候,想要遷移自己的服務程序陋桂,就要遷移整個虛擬機逆趣。顯然,遷移過程也會很復雜嗜历。
有沒有辦法更靈活快速一些呢宣渗?
有,這就引入了“容器(Container)”梨州。
容器也是虛擬化痕囱,但是屬于“輕量級”的虛擬化。它的目的和虛擬機一樣暴匠,都是為了創(chuàng)造“隔離環(huán)境”鞍恢。但是,它又和虛擬機有很大的不同——虛擬機是操作系統(tǒng)級別的資源隔離每窖,而容器本質(zhì)上是進程級的資源隔離帮掉。
而大家常聽說的Docker,就是創(chuàng)建容器的工具窒典,是應用容器引擎蟆炊。
Docker的中文意思,就是碼頭工人瀑志。而它的LOGO涩搓,就是一只鯨魚背著很多貨柜箱。
相比于傳統(tǒng)的虛擬機劈猪,Docker的優(yōu)勢很明顯昧甘,它啟動時間很快,是秒級战得,而且對資源的利用率很高(一臺主機可以同時運行幾千個Docker容器)充边。此外,它占的空間很小贡避,虛擬機一般要幾GB到幾十GB痛黎,而容器只需要MB級甚至KB級予弧。
除了Docker對容器進行創(chuàng)建之外刮吧,我們還需要一個工具,對容器進行編排掖蛤。
這個工具杀捻,就是K8S。
K8S蚓庭,就是Kubernetes致讥,中文意思是舵手或?qū)Ш絾T仅仆。Kubernetes這個單詞很長,所以大家把中間8個字母縮寫成8垢袱,就成了K8S墓拜。
K8S是一個容器集群管理系統(tǒng),主要職責是容器編排(Container Orchestration)——啟動容器请契,自動化部署咳榜、擴展和管理容器應用,還有回收容器爽锥。
簡單來說涌韩,K8S有點像容器的保姆。它負責管理容器在哪個機器上運行氯夷,監(jiān)控容器是否存在問題臣樱,控制容器和外界的通信,等等腮考。
通過下面這張K8S系統(tǒng)結(jié)構(gòu)圖雇毫,就能夠看出K8S和容器之間的關(guān)系。
除了K8S之外踩蔚,還有很多種容器管理平臺嘴拢,例如Compose,Marathon寂纪,Swarm席吴,Mesos等。
Docker和K8S捞蛋,關(guān)注的不再是基礎(chǔ)設(shè)施和物理資源孝冒,而是應用層,所以拟杉,就屬于PaaS庄涡。明白了吧?
好啦搬设,以上就是今天的內(nèi)容穴店。再說下去,估計很多人又要暈了拿穴。
正如文章開頭所說泣洞,今天主要是介紹KVM、Hypervisor默色、OpenStack球凰、Docker、K8S這些名詞的意思,它們在云計算系統(tǒng)中的位置呕诉,以及它們之間的關(guān)系缘厢。云計算涉及到大量的需求。同一個需求甩挫,會有很多不同的技術(shù)來實現(xiàn)贴硫。同一個技術(shù),往往又有多個不同的廠家互相競爭伊者。所以夜畴,概念和名詞就會特別多,發(fā)展變化也會很快删壮。
不管怎么說贪绘,梳理清楚最關(guān)鍵的名詞概念,是學好云計算的第一步央碟。