Kubernetes(K8s)

Kubernetes(K8s)

一秦踪、認(rèn)識虛擬化

1照卦、什么是虛擬化

在計(jì)算機(jī)中,虛擬化(英語:Virtualization)是一種資源管理技術(shù)捺檬,是將計(jì)算機(jī)的各種實(shí)體資源,如服務(wù)器贸铜、網(wǎng)絡(luò)堡纬、內(nèi)存及存儲等,予以抽象蒿秦、轉(zhuǎn)換后呈現(xiàn)出來烤镐,打破實(shí)體結(jié)構(gòu)間的不可切割的障礙,使用戶可以比原本的組態(tài)更好的方式來應(yīng)用這些資源棍鳖。這些資源的新虛擬部份是不受現(xiàn)有資源的架設(shè)方式炮叶,地域或物理組態(tài)所限制。一般所指的虛擬化資源包括計(jì)算能力和資料存儲渡处。

虛擬化技術(shù)是一套解決方案镜悉。完整的情況需要CPU、主板芯片組医瘫、BIOS和軟件的支持侣肄,例如VMM軟件或者某些操作系統(tǒng)本身。即使只是CPU支持虛擬化技術(shù)醇份,在配合VMM的軟件情況下稼锅,也會比完全不支持虛擬化技術(shù)的系統(tǒng)有更好的性能。

在實(shí)際的生產(chǎn)環(huán)境中被芳,虛擬化技術(shù)主要用來解決高性能的物理硬件產(chǎn)能過剩和老的舊的硬件產(chǎn)能過低的重組重用缰贝,透明化底層物理硬件,從而最大化的利用物理硬件 對資源充分利用

虛擬化技術(shù)種類很多畔濒,例如:軟件虛擬化、硬件虛擬化锣咒、內(nèi)存虛擬化侵状、網(wǎng)絡(luò)虛擬化(vip)、桌面虛擬化毅整、服務(wù)虛擬化趣兄、虛擬機(jī)等等。

2悼嫉、虛擬化分類

(1)全虛擬化架構(gòu)

虛擬機(jī)的監(jiān)視器(hypervisor)是類似于用戶的應(yīng)用程序運(yùn)行在主機(jī)的OS之上艇潭,如VMware的workstation,這種虛擬化產(chǎn)品提供了虛擬的硬件。

image-20200127234310740

(2)OS層虛擬化架構(gòu)

image-20200127234321231

(3)硬件層虛擬化

image-20200127234331725

硬件層的虛擬化具有高性能和隔離性蹋凝,因?yàn)閔ypervisor直接在硬件上運(yùn)行鲁纠,有利于控制VM的OS訪問硬件資源,使用這種解決方案的產(chǎn)品有VMware ESXi 和 Xen server

Hypervisor是一種運(yùn)行在物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個(gè)操作系統(tǒng)和應(yīng)用共享一套基礎(chǔ)物理硬件鳍寂,因此也可以看作是虛擬環(huán)境中的“元”操作系統(tǒng)改含,它可以協(xié)調(diào)訪問服務(wù)器上的所有物理設(shè)備和虛擬機(jī),也叫虛擬機(jī)監(jiān)視器(Virtual Machine Monitor迄汛,VMM)捍壤。

Hypervisor是所有虛擬化技術(shù)的核心。當(dāng)服務(wù)器啟動(dòng)并執(zhí)行Hypervisor時(shí)鞍爱,它會給每一臺虛擬機(jī)分配適量的內(nèi)存鹃觉、CPU、網(wǎng)絡(luò)和磁盤睹逃,并加載所有虛擬機(jī)的客戶操作系統(tǒng)盗扇。 宿主機(jī)

Hypervisor是所有虛擬化技術(shù)的核心,軟硬件架構(gòu)和管理更高效唯卖、更靈活粱玲,硬件的效能能夠更好地發(fā)揮出來。常見的產(chǎn)品有:VMware拜轨、KVM抽减、Xen等等

二、云計(jì)算&容器技術(shù)

1橄碾、OpenStack與KVM卵沉、VMWare

1.1、OpenStack

OpenStack:開源管理項(xiàng)目 OpenStack是一個(gè)旨在為公共及私有云的建設(shè)與管理提供軟件的開源項(xiàng)目法牲。它不是一個(gè)軟件史汗,而是由幾個(gè)主要的組件組合起來完成一些具體的工作。OpenStack由以下五個(gè)相對獨(dú)立的組件構(gòu)成:

· OpenStack Compute(Nova)是一套控制器拒垃,用于虛擬機(jī)計(jì)算或使用群組啟動(dòng)虛擬機(jī)實(shí)例;

· OpenStack鏡像服務(wù)(Glance)是一套虛擬機(jī)鏡像查找及檢索系統(tǒng)停撞,實(shí)現(xiàn)虛擬機(jī)鏡像管理;

· OpenStack對象存儲(Swift)是一套用于在大規(guī)模可擴(kuò)展系統(tǒng)中通過內(nèi)置冗余及容錯(cuò)機(jī)制悼瓮,以對象為單位的存儲系統(tǒng)戈毒,類似于Amazon S3;

· OpenStack Keystone,用于用戶身份服務(wù)與資源管理以及

· OpenStack Horizon横堡,基于Django的儀表板接口埋市,是個(gè)圖形化管理前端。 這個(gè)起初由美國國家航空航天局和Rackspace在2010年末合作研發(fā)的開源項(xiàng)目命贴,旨在打造易于部署道宅、功能豐富且易于擴(kuò)展的云計(jì)算平臺食听。OpenStack項(xiàng)目的首要任務(wù)是簡化云的部署過程并為其帶來良好的可擴(kuò)展性,企圖成為數(shù)據(jù)中心的操作系統(tǒng)污茵,即云操作系統(tǒng)樱报。

*Openstack*****項(xiàng)目層級關(guān)系:

image-20200127234345339

· 第一層是基礎(chǔ)設(shè)施層,這一層主要包含Nova省咨、Glance和Keystone肃弟,如果我們要想得到最基本的基礎(chǔ)設(shè)施的服務(wù),必須安裝部署這三個(gè)項(xiàng)目零蓉。

· 第二層是擴(kuò)展基礎(chǔ)設(shè)施層笤受,這一層可以讓我們得到更多跟基礎(chǔ)設(shè)施相關(guān)的高級服務(wù),主要包含Cinder敌蜂、Swift箩兽、Neutron、Designate和Ironic等章喉,其中Cinder提供塊存儲汗贫,Swift提供對象存儲,Neutron提供網(wǎng)絡(luò)服務(wù)秸脱,Designate提供DNS服務(wù)落包,Ironic提供裸機(jī)服務(wù)。

· 第三層是可選的增強(qiáng)特性摊唇,幫用戶提供一些更加高級的功能咐蝇,主要包含Ceilometer觅闽、Horizon和Barbican侈净,其中Ceilometer提供監(jiān)控、計(jì)量服務(wù)晕鹊,Horizon提供用戶界面岛请,Barbican提供秘鑰管理服務(wù)旭寿。

· 第四層主要是消費(fèi)型服務(wù),所謂的消費(fèi)型服務(wù)崇败,主要是指第四層的服務(wù)都需要通過使用前三層的服務(wù)來工作盅称。

第四層主要有Heat、Magnum后室、Sahara微渠、Solum和Murano等,其中Heat主要提供orchestration服務(wù)咧擂,Magnum主要提供容器服務(wù),Sahara主要提供大數(shù)據(jù)服務(wù)檀蹋,我們可以通過Sahara很方便地部署Hadoop松申、Spark集群云芦。Solum主要提供應(yīng)用開發(fā)的服務(wù),并且可以提供一些類似于CI/CD的功能贸桶。Muarno主要提供應(yīng)用目錄的服務(wù)舅逸,類似于App Store,就是用戶可以把一些常用的應(yīng)用發(fā)布出來供其他用戶去使用皇筛。最右邊是Kolla琉历,Kolla的主要功能是容器化所有的OpenStack服務(wù),便于OpenStack安裝部署和升級水醋。

1.2旗笔、KVM

KVM(Kernel-based Virtual Machine)基于內(nèi)核的虛擬機(jī) KVM是集成到Linux內(nèi)核的Hypervisor,是X86架構(gòu)且硬件支持虛擬化技術(shù)(Intel VT或AMD-V)的Linux的全虛擬化解決方案拄踪。它是Linux的一個(gè)很小的模塊蝇恶,利用Linux做大量的事,如任務(wù)調(diào)度惶桐、內(nèi)存管理與硬件設(shè)備交互等撮弧。 KVM最大的好處就在于它是與Linux內(nèi)核集成的,所以速度很快姚糊。

image-20200127234359151

1.3贿衍、VMWARE

VMWare (Virtual Machine ware)是一個(gè)“虛擬PC”虛擬機(jī)管理管理軟件。它的產(chǎn)品可以使你在一臺機(jī)器上同時(shí)運(yùn)行二個(gè)或更多Windows救恨、DOS贸辈、LINUX系統(tǒng)。

與“多啟動(dòng)”系統(tǒng)相比忿薇,VMWare采用了完全不同的概念裙椭。多啟動(dòng)系統(tǒng)在一個(gè)時(shí)刻只能運(yùn)行一個(gè)系統(tǒng),在系統(tǒng)切換時(shí)需要重新啟動(dòng)機(jī)器署浩。VMWare是真正“同時(shí)”運(yùn)行揉燃,多個(gè)操作系統(tǒng)在主系統(tǒng)的平臺上,就象標(biāo)準(zhǔn)Windows應(yīng)用程序那樣切換筋栋。而且每個(gè)操作系統(tǒng)你都可以進(jìn)行虛擬的分區(qū)炊汤、配置而不影響真實(shí)硬盤的數(shù)據(jù),你甚至可以通過網(wǎng)卡將幾臺虛擬機(jī)用網(wǎng)卡連接為一個(gè)局域網(wǎng)弊攘,極其方便抢腐。安裝在VMware操作系統(tǒng)性能上比直接安裝在硬盤上的系統(tǒng)低不少,因此襟交,比較適合學(xué)習(xí)和測試迈倍。

2、容器的發(fā)展

2.1捣域、LXC

LXC指代的是Linux Containers啼染,其功能通過Cgroups以及Linux Namespaces實(shí)現(xiàn)宴合。也是第一套完整的Linux容器管理實(shí)現(xiàn)方案。在LXC出現(xiàn)之前迹鹅, Linux上已經(jīng)有了類似 Linux-Vserver卦洽、OpenVZ 和 FreeVPS。雖然這些技術(shù)都已經(jīng)成熟斜棚,但是這些解決方案還沒有將它們的容器支持集成到主流 Linux 內(nèi)核阀蒂。相較于其它容器技術(shù),LXC能夠在無需任何額外補(bǔ)丁的前提下運(yùn)行在原版Linux內(nèi)核之上弟蚀。目前LXC項(xiàng)目由Canonical有限公司負(fù)責(zé)贊助及托管蚤霞。

image-20200127234606948

2.2、Docker

Docker項(xiàng)目最初是由一家名為DotCloud的平臺即服務(wù)廠商所打造粗梭,其后該公司更名為Docker争便。Docker在起步階段使用LXC,而后利用自己的Libcontainer庫將其替換下來断医。與其它容器平臺不同滞乙,Docker引入了一整套與容器管理相關(guān)的生態(tài)系統(tǒng)。其中包括一套高效的分層式容器鏡像模型鉴嗤、一套全局及本地容器注冊表斩启、一個(gè)精簡化REST API以及一套命令行界面等等。

與Docker具有同樣目標(biāo)功能的另外一種容器技術(shù)就是CoreOS公司開發(fā)的Rocket. Rocket基于App Container規(guī)范并使其成為一項(xiàng)更為開放的標(biāo)準(zhǔn)醉锅。

image-20200127234635757

3兔簇、Docker容器技術(shù)

3.1、Docker歷史

2010年硬耍,幾個(gè)搞IT的年輕人垄琐,在美國舊金山成立了一家名叫“dotCloud”的公司。

image-20200127234716890

這家公司主要提供基于PaaS的云計(jì)算技術(shù)服務(wù)经柴。具體來說狸窘,是和LXC有關(guān)的容器技術(shù)。LXC坯认,就是Linux容器虛擬技術(shù)(Linux container)翻擒、后來,dotCloud公司將自己的容器技術(shù)進(jìn)行了簡化和標(biāo)準(zhǔn)化牛哺,并命名為——Docker陋气。

Docker技術(shù)誕生之后,并沒有引起行業(yè)的關(guān)注引润。而dotCloud公司巩趁,作為一家小型創(chuàng)業(yè)企業(yè),在激烈的競爭之下淳附,也步履維艱晶渠。正當(dāng)他們快要堅(jiān)持不下去的時(shí)候凰荚,腦子里蹦出了“開源”的想法。

什么是“開源”褒脯?開源,就是開放源代碼缆毁。也就是將原來內(nèi)部保密的程序源代碼開放給所有人番川,然后讓大家一起參與進(jìn)來,貢獻(xiàn)代碼和意見脊框。

Open Source颁督,開源

有的軟件是一開始就開源的。也有的軟件浇雹,是混不下去沉御,創(chuàng)造者又不想放棄,所以選擇開源昭灵。自己養(yǎng)不活吠裆,就吃“百家飯”嘛。

2013年3月烂完,dotCloud公司的創(chuàng)始人之一试疙,Docker之父,28歲的Solomon?Hykes正式?jīng)Q定抠蚣,將Docker項(xiàng)目開源祝旷。

不開則已,一開驚人嘶窄。

越來越多的IT工程師發(fā)現(xiàn)了Docker的優(yōu)點(diǎn)怀跛,然后蜂擁而至,加入Docker開源社區(qū)柄冲。

Docker的人氣迅速攀升吻谋,速度之快,令人瞠目結(jié)舌羊初。

開源當(dāng)月滨溉,Docker 0.1版本發(fā)布。此后的每一個(gè)月长赞,Docker都會發(fā)布一個(gè)版本晦攒。到2014年6月9日,Docker 1.0版本正式發(fā)布得哆。

此時(shí)的Docker脯颜,已經(jīng)成為行業(yè)里人氣最火爆的開源技術(shù),沒有之一贩据。甚至像Google栋操、微軟闸餐、Amazon、VMware這樣的巨頭矾芙,都對它青睞有加舍沙,表示將全力支持。

Docker火了之后剔宪,dotCloud公司干脆把公司名字也改成了Docker Inc.拂铡。

Docker和容器技術(shù)為什么會這么火爆?說白了葱绒,就是因?yàn)樗拜p”感帅。

3.2、Docker原理

容器是一種輕量級的虛擬化技術(shù)地淀,因?yàn)樗摂M機(jī)比起來失球,它少了一層 hypervisor 層。先看一下下面這張圖帮毁,這張圖簡單描述了一個(gè)容器的啟動(dòng)過程实苞。

image-20200127235028591
 注: hypervisor:一種運(yùn)行在物理服務(wù)器和操作系統(tǒng)之間的中間層軟件,可以允許多個(gè)操作系統(tǒng)和應(yīng)用共享一套基礎(chǔ)物理硬件作箍∮擦海可以將hypervisor看做是虛擬環(huán)境中的“元”操作系統(tǒng),可以協(xié)調(diào)訪問服務(wù)器上的所有物理設(shè)備和虛擬機(jī)胞得,所以又稱為虛擬機(jī)監(jiān)視器(virtual machine monitor)荧止。
 
hypervisor是所有虛擬化技術(shù)的核心,非中斷的支持多工作負(fù)載遷移是hypervisor的基本功能阶剑。當(dāng)服務(wù)器啟動(dòng)并執(zhí)行hypervisor時(shí)跃巡,會給每一臺虛擬機(jī)分配適量的內(nèi)存,cpu牧愁,網(wǎng)絡(luò)和磁盤資源素邪,并且加載所有虛擬機(jī)的客戶操作系統(tǒng)。 

最下面是一個(gè)磁盤猪半,容器的鏡像是存儲在磁盤上面的兔朦。上層是一個(gè)容器引擎,容器引擎可以是 docker磨确,也可以是其它的容器引擎沽甥。引擎向下發(fā)一個(gè)請求,比如說創(chuàng)建容器乏奥,這時(shí)候它就把磁盤上面的容器鏡像運(yùn)行成在宿主機(jī)上的一個(gè)進(jìn)程摆舟。

對于容器來說,最重要的是怎么保證這個(gè)進(jìn)程所用到的資源是被隔離和被限制住的,在 Linux 內(nèi)核上面是由 cgroup 和 namespace 這兩個(gè)技術(shù)來保證的

3.3恨诱、NameSpace

namespace 是用來做資源隔離的媳瞪,在 Linux 內(nèi)核上有七種 namespace,docker 中用到了前六種照宝。第七種 cgroup namespace 在 docker 本身并沒有用到蛇受,但是在 runC 實(shí)現(xiàn)中實(shí)現(xiàn)了 cgroup namespace

 [圖片上傳失敗...(image-3792bc-1631429687773)]
1)第一個(gè)是 mout namespace。mout namespace 就是保證容器看到的文件系統(tǒng)的視圖硫豆,是容器鏡像提供的一個(gè)文件系統(tǒng)龙巨,也就是說它看不見宿主機(jī)上的其他文件,除了通過 -v 參數(shù) bound 的那種模式熊响,是可以把宿主機(jī)上面的一些目錄和文件,讓它在容器里面可見的诗赌; 
 
2)第二個(gè)是 uts namespace汗茄,這個(gè) namespace 主要是隔離了 hostname 和 domain; 
 
3)第三個(gè)是 pid namespace铭若,這個(gè) namespace 是保證了容器的 init 進(jìn)程是以 1 號進(jìn)程來啟動(dòng)的洪碳; 
 
4)第四個(gè)是網(wǎng)絡(luò) namespace,除了容器用 host 網(wǎng)絡(luò)這種模式之外叼屠,其他所有的網(wǎng)絡(luò)模式都有一個(gè)自己的 network namespace 的文件瞳腌; 
 
5)第五個(gè)是 user namespace,這個(gè) namespace 是控制用戶 UID 和 GID 在容器內(nèi)部和宿主機(jī)上的一個(gè)映射镜雨,不過這個(gè) namespace 用的比較少嫂侍; 
 
6)第六個(gè)是 IPC namespace,這個(gè) namespace 是控制了進(jìn)程兼通信的一些東西荚坞,比方說信號量挑宠; 
 
7)第七個(gè)是 cgroup namespace,上圖右邊有兩張示意圖颓影,分別是表示開啟和關(guān)閉 cgroup namespace各淀。用 cgroup namespace 帶來的一個(gè)好處是容器中看到的 cgroup 視圖是以根的形式來呈現(xiàn)的,這樣的話就和宿主機(jī)上面進(jìn)程看到的 cgroup namespace 的一個(gè)視圖方式是相同的诡挂;另外一個(gè)好處是讓容器內(nèi)部使用 cgroup 會變得更安全碎浇。

4、Docker&KVM&OpenStack

4.1璃俗、Docker&KVM

VM 利用 Hypervisor 虛擬化技術(shù)來模擬 CPU奴璃、內(nèi)存等硬件資源,這樣就可以在宿主機(jī)上建立一個(gè) Guest OS旧找,這是常說的安裝一個(gè)虛擬機(jī)溺健。

image-20200127235256653

每一個(gè) Guest OS 都有一個(gè)獨(dú)立的內(nèi)核,比如 Ubuntu、CentOS 甚至是 Windows 等鞭缭,在這樣的 Guest OS 之下剖膳,每個(gè)應(yīng)用都是相互獨(dú)立的,VM 可以提供一個(gè)更好的隔離效果岭辣。但這樣的隔離效果需要付出一定的代價(jià)吱晒,因?yàn)樾枰岩徊糠值挠?jì)算資源交給虛擬化,這樣就很難充分利用現(xiàn)有的計(jì)算資源沦童,并且每個(gè) Guest OS 都需要占用大量的磁盤空間仑濒,比如 Windows 操作系統(tǒng)的安裝需要 10~30G 的磁盤空間,Ubuntu 也需要 5~6G偷遗,同時(shí)這樣的方式啟動(dòng)很慢墩瞳。正是因?yàn)樘摂M機(jī)技術(shù)的缺點(diǎn),催生出了容器技術(shù)氏豌。

容器是針對于進(jìn)程而言的喉酌,因此無需 Guest OS,只需要一個(gè)獨(dú)立的文件系統(tǒng)提供其所需要文件集合即可泵喘。所有的文件隔離都是進(jìn)程級別的泪电,因此啟動(dòng)時(shí)間快于 VM,并且所需的磁盤空間也小于 VM纪铺。當(dāng)然了相速,進(jìn)程級別的隔離并沒有想象中的那么好,隔離效果相比 VM 要差很多鲜锚。

總體而言突诬,容器和 VM 相比,各有優(yōu)劣烹棉,因此容器技術(shù)也在向著強(qiáng)隔離方向發(fā)展攒霹。

Docker提供了一種程序運(yùn)行的容器,同時(shí)保證這些容器相互隔離浆洗。虛擬機(jī)也有類似的功能催束,但是它通過Hypervisor創(chuàng)建了一個(gè)完整的操作系統(tǒng)棧。不同于虛擬機(jī)的方式伏社,Docker依賴于Linux自帶的LXC(Linux Containers)技術(shù)抠刺。LXC利用了Linux可以對進(jìn)程做內(nèi)存、CPU摘昌、網(wǎng)絡(luò)隔離的特性速妖。Docker鏡像不需要新啟動(dòng)一個(gè)操作系統(tǒng),因此提供了一種輕量級的打包和運(yùn)行程序的方式聪黎。而且Docker能夠直接訪問硬件罕容,從而使它的I/O操作比虛擬機(jī)要快得多。

疑問:

Docker可以直接跑在物理服務(wù)器上,這引起大家的疑問:假如已經(jīng)用了Docker锦秒,還有必要使用OpenStack嗎露泊?

Docker和KVM的性能測試對比圖表。和預(yù)期的一樣旅择,啟動(dòng)KVM和Docker容器的時(shí)間差異非常顯著惭笑,而且在內(nèi)存和CPU利用率上,雙方差距非常大生真,如下表所示沉噩。

image-20200127235421453

雙方巨大的性能差異,導(dǎo)致了在相同工作負(fù)載下柱蟀,KVM需要更多的CPU和內(nèi)存資源川蒙,導(dǎo)致成本上升。

4.2长已、KVM&openstack

image-20200127235530508
openstack是云管理平臺派歌,其本身并不提供虛擬化功能,真正的虛擬化能力是由底層的hypervisor(如KVM痰哨、Qemu、Xen等)提供匾嘱。所謂管理平臺斤斧,就是為了方便使用而已。如果沒有openstack霎烙,一樣可以通過virsh撬讽、virt-manager來實(shí)現(xiàn)創(chuàng)建虛擬機(jī)的操作,只不過敲命令行的方式需要一定的學(xué)習(xí)成本悬垃,對于普通用戶不是很友好游昼。 

KVM是最底層的hypervisor,是用來模擬CPU的運(yùn)行尝蠕,然鵝一個(gè)用戶能在KVM上完成虛擬機(jī)的操作還需要network及周邊的I/O支持烘豌,所以便借鑒了qemu進(jìn)行一定的修改,形成qemu-kvm看彼。但是openstack不會直接控制qemu-kvm廊佩,會用一個(gè)libvirt的庫去間接控制qemu-kvm。qemu-kvm的地位就像底層驅(qū)動(dòng)來著靖榕。 

OpenStack:開源管理項(xiàng)目

OpenStack是一個(gè)旨在為公共及私有云的建設(shè)與管理提供軟件的開源項(xiàng)目标锄。它不是一個(gè)軟件,而是由幾個(gè)主要的組件組合起來完成一些具體的工作茁计。OpenStack由以下五個(gè)相對獨(dú)立的組件構(gòu)成:

  • OpenStack Compute(Nova)是一套控制器料皇,用于虛擬機(jī)計(jì)算或使用群組啟動(dòng)虛擬機(jī)實(shí)例;

  • OpenStack鏡像服務(wù)(Glance)是一套虛擬機(jī)鏡像查找及檢索系統(tǒng),實(shí)現(xiàn)虛擬機(jī)鏡像管理践剂;

  • OpenStack對象存儲(Swift)是一套用于在大規(guī)墓砥可擴(kuò)展系統(tǒng)中通過內(nèi)置冗余及容錯(cuò)機(jī)制,以對象為單位的存儲系統(tǒng)舷手,類似于Amazon S3拧簸;

  • OpenStack Keystone,用于用戶身份服務(wù)與資源管理以及

  • OpenStack Horizon男窟,基于Django的儀表板接口盆赤,是個(gè)圖形化管理前端。

這個(gè)起初由美國國家航空航天局和Rackspace在2010年末合作研發(fā)的開源項(xiàng)目歉眷,旨在打造易于部署牺六、功能豐富且易于擴(kuò)展的云計(jì)算平臺。OpenStack項(xiàng)目的首要任務(wù)是簡化云的部署過程并為其帶來良好的可擴(kuò)展性汗捡,企圖成為數(shù)據(jù)中心的操作系統(tǒng)淑际,即云操作系統(tǒng)。

KVM:開放虛擬化技術(shù)

KVM(Kernel-based Virtual Machine)是一個(gè)開源的系統(tǒng)虛擬化模塊扇住,它需要硬件支持春缕,如Intel VT技術(shù)或者AMD V技術(shù),是基于硬件的完全虛擬化艘蹋,完全內(nèi)置于Linux锄贼。

2008年,紅帽收購Qumranet獲得了KVM技術(shù)女阀,并將其作為虛擬化戰(zhàn)略的一部分大力推廣宅荤,在2011年發(fā)布RHEL6時(shí)支持KVM作為唯一的hypervisor。KVM主打的就是高性能浸策、擴(kuò)展性冯键、高安全,以及低成本庸汗。

與Linux的緣分

一個(gè)被某些熱心支持者成為云時(shí)代的Linux惫确,是公有云與私有云的開源操作系統(tǒng)。一個(gè)則是Linux內(nèi)核的一部分夫晌,將Linux轉(zhuǎn)換成一個(gè)Type-1 hypervisor雕薪,無需任何變更就能享受現(xiàn)有的Linux內(nèi)核進(jìn)程調(diào)度、內(nèi)存管理和設(shè)備支持晓淀。

OpenStack炙手可熱所袁,它如同Linux一樣,旨在構(gòu)建一個(gè)內(nèi)核凶掰,所有的軟件廠商都圍繞著它進(jìn)行工作燥爷。OpenStack的許多子項(xiàng)目蜈亩,對云計(jì)算平臺中的各種資源(如計(jì)算能力、存儲前翎、網(wǎng)絡(luò))提供敏捷管理稚配。此外,OpenStack也提供對虛擬化技術(shù)的支持港华。

KVM集成在Linux的各個(gè)主要發(fā)行版本中道川,使用Linux自身的調(diào)度器進(jìn)行管理。KVM專注于成為最好的虛擬機(jī)監(jiān)控器立宜,是使用Linux企業(yè)的不二選擇冒萄,加上它還支持Windows平臺,所以也是異構(gòu)環(huán)境的最佳選擇橙数。

OpenStack與KVM都發(fā)展迅猛

OpenStack是一個(gè)擁有眾多支持者的大項(xiàng)目尊流。時(shí)至今日,已經(jīng)有超過180家企業(yè)和400多位開發(fā)人員對這一項(xiàng)目積極地做著貢獻(xiàn)灯帮,而其生態(tài)系統(tǒng)甚至更為龐大崖技,已經(jīng)超過了5600人和850家機(jī)構(gòu)。在今年9月钟哥,OpenStack基會正式成立迎献。白金會員有紅帽、IBM與惠普等腻贰,黃金會員包括思科忿晕、戴爾與英特爾等。

OpenStack基本上是一個(gè)軟件項(xiàng)目银受,有近55萬行代碼。分解成核心項(xiàng)目鸦采、孵化項(xiàng)目宾巍,以及支持項(xiàng)目和相關(guān)項(xiàng)目。除了以上提及的五大組成渔伯,與虛擬網(wǎng)絡(luò)有關(guān)的Quantum首次被列為核心項(xiàng)目顶霞。

KVM是一個(gè)脫穎而出的開放虛擬化技術(shù)。它是由一個(gè)大型的锣吼、活躍的開放社區(qū)共同開發(fā)的选浑,紅帽、IBM玄叠、SUSE等都是其成員古徒。2011年,IBM读恃、紅帽隧膘、英特爾與惠普等建立開放虛擬化聯(lián)盟(OVA)代态,幫助構(gòu)建KVM生態(tài)系統(tǒng),提升KVM采用率疹吃。如今蹦疑,OVA已經(jīng)擁有超過250名成員公司,其中萨驶,IBM有60多位程序員專門工作于KVM開源社區(qū)歉摧。

4.3、Docker&openstack

OpenStack和Docker之間是很好的互補(bǔ)關(guān)系腔呜。Docker的出現(xiàn)能讓IaaS層的資源使用得更加充分叁温,因?yàn)镈ocker相對虛擬機(jī)來說更輕量

對資源的利用率會更加充分;

image-20200128000024160
云平臺提供一個(gè)完整管理數(shù)據(jù)中心的解決方案育谬,至于用哪種hypervisor或container只是云平臺中的一個(gè)小部分券盅。像OpenStack這樣的云平臺包含了多租戶的安全、隔離膛檀、管理锰镀、監(jiān)控、存儲咖刃、網(wǎng)絡(luò)等其他部分泳炉。云數(shù)據(jù)中心的管理需要很多服務(wù)支撐,但這和用Docker還是KVM其實(shí)沒多大關(guān)系嚎杨。



Docker不是一個(gè)全功能的VM, 它有很多嚴(yán)重的缺陷花鹅,比如安全、Windows支持枫浙,因此不能完全替代KVM∨偎啵現(xiàn)在Docker社區(qū)一直在彌補(bǔ)這些缺陷,當(dāng)然這會帶來一定的性能損耗箩帚。

5真友、云原生

image-20200128000150046
云原生是一條最佳路徑或者最佳實(shí)踐。更詳細(xì)的說紧帕,***云原生為用戶指定了一條低心智負(fù)擔(dān)的盔然、敏捷的、能夠以可擴(kuò)展是嗜、可復(fù)制的方式最大化地利用云的能力愈案、發(fā)揮云的價(jià)值的最佳路徑。***

云原生的技術(shù)范疇包括了以下幾個(gè)方面:

  • 第一部分是云應(yīng)用定義與開發(fā)流程鹅搪。這包括應(yīng)用定義與鏡像制作站绪、配置 CI/CD、消息和 Streaming 以及數(shù)據(jù)庫等丽柿。

  • 第二部分是云應(yīng)用的編排與管理流程崇众。這也是 Kubernetes 比較關(guān)注的一部分掂僵,包括了應(yīng)用編排與調(diào)度、服務(wù)發(fā)現(xiàn)治理顷歌、遠(yuǎn)程調(diào)用锰蓬、API 網(wǎng)關(guān)以及 Service Mesh。

  • 第三部分是監(jiān)控與可觀測性眯漩。這部分所強(qiáng)調(diào)的是云上應(yīng)用如何進(jìn)行監(jiān)控芹扭、日志收集、Tracing 以及在云上如何實(shí)現(xiàn)破壞性測試赦抖,也就是混沌工程的概念舱卡。

  • 第四部分就是云原生的底層技術(shù),比如容器運(yùn)行時(shí)队萤、云原生存儲技術(shù)轮锥、云原生網(wǎng)絡(luò)技術(shù)等。

  • 第五部分是云原生工具集要尔,在前面的這些核心技術(shù)點(diǎn)之上舍杜,還有很多配套的生態(tài)或者周邊的工具需要使用,比如流程自動(dòng)化與配置管理赵辕、容器鏡像倉庫既绩、云原生安全技術(shù)以及云端密碼管理等。

  • 最后則是 Serverless还惠。Serverless 是一種 PaaS 的特殊形態(tài)饲握,它定義了一種更為“極端抽象”的應(yīng)用編寫方式,包含了 FaaS 和 BaaS 這樣的概念蚕键。而無論是 FaaS 還是 BaaS救欧,其最為典型的特點(diǎn)就是按實(shí)際使用計(jì)費(fèi)(Pay as you go),因此 Serverless 計(jì)費(fèi)也是重要的知識和概念锣光。

三颜矿、容器編排技術(shù)

1、應(yīng)用部署變遷

image-20200128000128240

2嫉晶、容器管理

怎么去管理這么多的容器

? 怎么橫向擴(kuò)展

? 容器down 了,怎么恢復(fù)

? 更新容器后不影響業(yè)務(wù)

? 如何監(jiān)控容器

? 如何調(diào)度新創(chuàng)建的容器

? 數(shù)據(jù)安全問題

3田篇、docker-compose

容器編排工具

4替废、Swarm

目前三大主流的容器平臺Swarm, Mesos和Kubernetes具有不同的容器調(diào)度系統(tǒng) ;

Swarm的特點(diǎn)是直接調(diào)度Docker容器泊柬,并且提供和標(biāo)準(zhǔn)Docker API一致的API椎镣。

每臺服務(wù)器上都裝有Docker并且開啟了基于HTTP的DockerAPI。這個(gè)集群中有一個(gè)SwarmManager的管理者兽赁,用來管理集群中的容器資源状答。管理者的管理對象不是服務(wù)器層面而是集群層面的冷守,也就是說通過Manager,我們只能籠統(tǒng)地向集群發(fā)出指令而不能具體到某臺具體的服務(wù)器上要干什么(這也是Swarm的根本所在)惊科。至于具體的管理實(shí)現(xiàn)方式拍摇,Manager向外暴露了一個(gè)HTTP接口,外部用戶通過這個(gè)HTTP接口來實(shí)現(xiàn)對集群的管理馆截。
image-20200128000340720

5充活、Mesos

Mesos針對不同的運(yùn)行框架采用相對獨(dú)立的調(diào)度系統(tǒng),其框架提供了Docker容器的原生支持蜡娶。 Mesos并不負(fù)責(zé)調(diào)度而是負(fù)責(zé)委派授權(quán)混卵,畢竟很多框架都已經(jīng)實(shí)現(xiàn)了復(fù)雜的調(diào)度。

6窖张、Kubernetes

Kubernetes則采用了Pod和Label這樣的概念把容器組合成一個(gè)個(gè)的互相存在依賴關(guān)系的邏輯單元幕随。相關(guān)容器被組合成Pod后被共同部署和調(diào)度,形成服務(wù)(Service)宿接。這個(gè)是Kubernetes和Swarm赘淮,Mesos的主要區(qū)別。 

Kubernetes(k8s)是自動(dòng)化容器操作的開源平臺澄阳,這些操作包括部署拥知,調(diào)度和節(jié)點(diǎn)集群間擴(kuò)展。如果你曾經(jīng)用過Docker容器技術(shù)部署容器碎赢,那么可以將Docker看成Kubernetes內(nèi)部使用的低級別組件低剔。Kubernetes不僅僅支持Docker,還支持Rocket肮塞,這是另一種容器技術(shù)襟齿。
image-20200128000519223

使用Kubernetes可以:

  • 自動(dòng)化容器的部署和復(fù)制

  • 隨時(shí)擴(kuò)展或收縮容器規(guī)模

  • 將容器組織成組,并且提供容器間的負(fù)載均衡

  • 很容易地升級應(yīng)用程序容器的新版本

  • 提供容器彈性枕赵,如果容器失效就替換它猜欺,等等...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拷窜,隨后出現(xiàn)的幾起案子开皿,更是在濱河造成了極大的恐慌,老刑警劉巖篮昧,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赋荆,死亡現(xiàn)場離奇詭異,居然都是意外死亡懊昨,警方通過查閱死者的電腦和手機(jī)窄潭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酵颁,“玉大人嫉你,你說我怎么就攤上這事月帝。” “怎么了幽污?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵嚷辅,是天一觀的道長。 經(jīng)常有香客問我油挥,道長潦蝇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任深寥,我火速辦了婚禮攘乒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惋鹅。我一直安慰自己则酝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布闰集。 她就那樣靜靜地躺著沽讹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪武鲁。 梳的紋絲不亂的頭發(fā)上爽雄,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音沐鼠,去河邊找鬼挚瘟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛饲梭,可吹牛的內(nèi)容都是我干的乘盖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼憔涉,長吁一口氣:“原來是場噩夢啊……” “哼订框!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兜叨,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤穿扳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后国旷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矛物,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年议街,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片璧榄。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡特漩,死狀恐怖吧雹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涂身,我是刑警寧澤雄卷,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蛤售,受9級特大地震影響丁鹉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悴能,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一揣钦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漠酿,春花似錦冯凹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夫凸,卻和暖如春浑劳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夭拌。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工魔熏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啼止。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓道逗,卻偏偏與公主長得像诉字,于是被迫代替她去往敵國和親奔缠。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容