容器與虛擬機(jī)之爭(zhēng)?不存在的

2022-10-08    分類: 網(wǎng)站建設(shè)

Hypervisor技術(shù)從一開始就是云計(jì)算的基石之一。然而,近年來容器技術(shù)的爆發(fā),讓這種虛擬化技術(shù)開始被認(rèn)為是傳統(tǒng)方法。有不少人認(rèn)為,容器的普及對(duì)虛擬機(jī)形成了沖擊,于是就有了早些年的容器與虛擬機(jī)之爭(zhēng)。

經(jīng)過幾年的技術(shù)發(fā)展和大規(guī)模實(shí)踐,雖然許多企業(yè)正在將基于虛擬機(jī)的應(yīng)用程序遷移到容器,但事實(shí)上虛擬機(jī)在數(shù)據(jù)中心和公有云中仍然普遍存在。一方面,容器并沒有完全替代虛擬機(jī),另一方面虛擬機(jī)也在積極支持容器,兩者共存的情形反而越來越普遍。

今天就來聊聊虛擬機(jī)和容器到底有什么區(qū)別,為什么兩者會(huì)走向共存,以及將來會(huì)走向何方?

容器與虛擬機(jī)之爭(zhēng)?不存在的

虛擬機(jī)和容器各有優(yōu)勢(shì)

虛擬機(jī)和容器誕生的初衷,都是為了更好的提高資源利用率,但兩者的區(qū)別在于:虛擬機(jī)是操作系統(tǒng)級(jí)別的資源隔離,而容器本質(zhì)上是進(jìn)程級(jí)的資源隔離。

虛擬機(jī)(Virtual Machine),是指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。每個(gè)虛擬機(jī)都有獨(dú)立的CMOS、硬盤和操作系統(tǒng),可以像使用實(shí)體機(jī)一樣對(duì)虛擬機(jī)進(jìn)行操作。

虛擬機(jī)的運(yùn)行離不開Hypervisor,Hypervisor是運(yùn)行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個(gè)操作系統(tǒng)和應(yīng)用共享硬件。

簡(jiǎn)單來說,服務(wù)器硬件、Hypervisor、虛擬機(jī)之間的關(guān)系在于,每個(gè)虛擬機(jī)都有一個(gè)完整的操作系統(tǒng),虛擬機(jī)內(nèi)部署的應(yīng)用可以使用整個(gè)操作系統(tǒng)的資源。

虛擬機(jī)的出現(xiàn),解決了早期在物理服務(wù)器上部署應(yīng)用但無法為其應(yīng)用程序定義資源邊界而導(dǎo)致的資源分配問題。

但是在使用虛擬化一段時(shí)間后,會(huì)發(fā)現(xiàn)它存在一些問題,例如:虛擬機(jī)的系統(tǒng)層會(huì)占用比較多物理機(jī)的資源,需要更進(jìn)一步提高服務(wù)器的資源利用率;當(dāng)需要遷移虛擬機(jī)服務(wù)程序時(shí),需要遷移整個(gè)虛擬機(jī),遷移流程復(fù)雜。

為了解決這些問題,容器就出現(xiàn)了。

容器技術(shù),可以理解為操作系統(tǒng)虛擬化技術(shù),它是一種輕量級(jí)的虛擬化技術(shù)。通過內(nèi)核創(chuàng)建多個(gè)虛擬的操作系統(tǒng)實(shí)例(內(nèi)核和庫),來隔離不同的進(jìn)程(容器),不同的實(shí)例相互隔離,相互之間完全無感知??梢院?jiǎn)單地理解為容器就是一個(gè)進(jìn)程沙盒,來提供進(jìn)程級(jí)的隔離。

相比于虛擬機(jī),容器沒有自己的操作系統(tǒng),而是通過容器引擎來實(shí)現(xiàn)共享宿主機(jī)操作系統(tǒng)內(nèi)核,從而減少需要運(yùn)行多個(gè)操作系統(tǒng)的開銷。

作為一個(gè)標(biāo)準(zhǔn)的軟件單元,容器將應(yīng)用部署所需的代碼和依賴項(xiàng)打包為鏡像,可以快速可靠地從一個(gè)計(jì)算環(huán)境運(yùn)行到另一個(gè)環(huán)境。

因此,容器很大的優(yōu)勢(shì)在于,它啟動(dòng)時(shí)間很快,可以達(dá)到秒級(jí),而且對(duì)資源的利用率很高,如:一臺(tái)主機(jī)可以同時(shí)運(yùn)行幾千個(gè)Docker容器。此外,它占的空間很小,虛擬機(jī)一般要幾GB到幾十GB,而容器只需要MB級(jí)甚至KB級(jí)。

總的來說,容器和虛擬機(jī)具有相似的資源隔離和分配優(yōu)勢(shì),但功能不同。容器虛擬化的是操作系統(tǒng)而不是硬件,因此容器更加輕便高效。但是如果用戶需要使用在不同操作系統(tǒng)上運(yùn)行的不同應(yīng)用程序,虛擬機(jī)就能提供可靠的解決方案和更好的安全性。

因此,如今最有效和最常用的策略是,擁有一臺(tái)具有多個(gè)虛擬機(jī)的物理機(jī),每個(gè)虛擬機(jī)都有多個(gè)容器。容器和虛擬機(jī)一起使用,為部署和管理應(yīng)用提供了極大的靈活性。

虛擬機(jī)和K8s相互融合

可以看到,容器和虛擬機(jī)根本就存在誰取代誰,而是相互融合的狀態(tài)。這也帶來了新的問題,即如何同時(shí)管理虛擬機(jī)和容器技術(shù),成為企業(yè)的一個(gè)普遍的需求。

作為虛擬化技術(shù)的最主要推手,VMware很早就做出了反映。此前VMware通過在虛擬化平臺(tái)上外掛PKS(Pivotal與VMware共同推出的一個(gè)K8s平臺(tái)),來實(shí)現(xiàn)虛機(jī)與容器的同時(shí)管理。但畢竟是外掛,其效率和管理方便性上都有不足。

去年的VMworld大會(huì)上,VMware發(fā)布Tanzu 品牌計(jì)劃,宣布在虛擬化技術(shù)中原生地提供對(duì)容器技術(shù)的支持。VMware的Tanzu把虛擬機(jī)和K8s結(jié)合起來,對(duì)虛擬機(jī)和容器以及物理機(jī)統(tǒng)一進(jìn)行管理,它能實(shí)現(xiàn)跨物理機(jī)、虛擬機(jī)以及內(nèi)部數(shù)據(jù)中心、跨多個(gè)云來管理應(yīng)用,從而為工作負(fù)載提供一個(gè)統(tǒng)一的支撐。

今年3月Tanzu正式亮相,VMware最新一代虛擬化平臺(tái)vSphere 7對(duì)外發(fā)布,vSphere 7迎來了近10年比較大的變革。VMware對(duì)vSphere進(jìn)行了重構(gòu),將K8s嵌入vSphere的控制平面,讓它成為一個(gè)K8s原生平臺(tái),從而原生地支持K8s。

這樣,那些VMware的傳統(tǒng)用戶無需在虛擬機(jī)和K8s容器環(huán)境之間做出選擇,從而能自由在vSphere上進(jìn)行現(xiàn)代應(yīng)用程序開發(fā)和運(yùn)營(yíng),同時(shí)繼續(xù)利用現(xiàn)有的技術(shù)、工具和技能組合投資。

另一方面,容器廠商也認(rèn)識(shí)到了虛擬化的客觀存在,也在擁抱虛擬化技術(shù),kubevirt 就是基于這個(gè)目的推出的。

kubevirt是 Red hat 開源的以容器方式運(yùn)行虛擬機(jī)的項(xiàng)目,使用容器的Image Registry去創(chuàng)建虛擬機(jī)并提供虛機(jī)的生命周期管理。在紅帽4月底舉行的年度技術(shù)大會(huì)Red Hat Summit 2020大會(huì)上,紅帽宣布推出OpenShift 虛擬化的技術(shù)預(yù)覽,OpenShift 虛擬化就源自KubeVirt開源項(xiàng)目。企業(yè)可以通過這一功能,在整合了云原生與傳統(tǒng)工作負(fù)載的OpenShift上開發(fā)、部署和管理由虛擬機(jī)、容器和無服務(wù)器構(gòu)成的應(yīng)用。

雖然VMware和紅帽的從不同出發(fā)點(diǎn)出發(fā),但目的是一樣的,而這背后的推動(dòng)力則是企業(yè)的現(xiàn)實(shí)需求。對(duì)用戶而言,它們的行動(dòng)無疑是受歡迎的,這能讓企業(yè)少了后顧之憂,不再需要進(jìn)行非此即彼的選擇,不用糾結(jié)容器究竟應(yīng)該部署在虛擬機(jī)還是裸機(jī)上,從而可以更靈活支持未來的各種應(yīng)用。

虛擬機(jī)和K8s的未來

目前,虛擬機(jī)與容器技術(shù)的結(jié)合已經(jīng)成為一個(gè)事實(shí),不僅如此,虛擬機(jī)也正在成為云原生架構(gòu)的一部分——這就是容器原生虛擬化。以K8s為代表的容器,運(yùn)行在基于虛擬機(jī)的基礎(chǔ)設(shè)施之上,而基于虛擬機(jī)的工作負(fù)載,仍然是IT組合的重要組成部分。

未來,虛擬機(jī)和K8s的融合會(huì)呈現(xiàn)哪些趨勢(shì)呢?

K8s編排微型虛擬機(jī)(如Kata Containers、Firecracker或gVisor)

微型虛擬機(jī)不像傳統(tǒng)虛擬化那樣提供完整的“機(jī)器”,而是專注于提供足夠的虛擬機(jī),來成功執(zhí)行應(yīng)用程序容器或功能。因此,微型虛擬機(jī)旨在提供相對(duì)于標(biāo)準(zhǔn)Linux容器的硬隔離,同時(shí)很大限度地減少傳統(tǒng)虛擬機(jī)在冷啟動(dòng)時(shí)間和性能方面的弱勢(shì)。

對(duì)于某些用戶而言,可能需要更強(qiáng)大的多租戶隔離。因此,這種方式能夠?yàn)椴皇苄湃蔚墓ぷ髫?fù)載提供更嚴(yán)格的多租戶隔離。

K8s編排標(biāo)準(zhǔn)虛擬機(jī)

以前,虛擬化堆棧是與K8s和云原生是完全獨(dú)立的孤島——獨(dú)立的工作流程、獨(dú)立的工具、獨(dú)立的團(tuán)隊(duì)等。容器原生虛擬化的概念,使虛擬機(jī)能夠遵循與K8s中基于容器的應(yīng)用程序相同的工作流程。

現(xiàn)在有了像KubeVirt這樣的開源項(xiàng)目,就可以實(shí)現(xiàn)容器原生虛擬化。K8s編排引擎可以應(yīng)用于管理在云或虛擬化平臺(tái)上運(yùn)行的標(biāo)準(zhǔn)虛擬機(jī),K8s開始使容器和虛擬機(jī)的混合運(yùn)維成為可能。

裸機(jī)上的K8s(沒有虛擬機(jī))

雖然目前大多數(shù)K8s平臺(tái)都部署在基于虛擬機(jī)的基礎(chǔ)設(shè)施上,但容器并不依賴于虛擬機(jī)來運(yùn)行,在裸機(jī)上運(yùn)行K8s和容器的實(shí)踐還在繼續(xù)增長(zhǎng)。

在裸機(jī)上運(yùn)行K8s將使應(yīng)用程序能夠充分利用底層硬件,這對(duì)于為K8s帶來更多機(jī)器和性能敏感應(yīng)用程序的用戶來說非常重要。在裸機(jī)上運(yùn)行K8s和容器,還可以幫助用戶減少虛擬機(jī)蔓延并簡(jiǎn)化操作。這對(duì)于虛擬機(jī)而言,不算是個(gè)好消息。

總體而言,虛擬機(jī)和容器有著各自的優(yōu)勢(shì),雖然在應(yīng)用場(chǎng)景上有一些重疊,但主要應(yīng)用場(chǎng)景還是有區(qū)別的。比如,虛擬機(jī)更適合運(yùn)行多個(gè)操作系統(tǒng)資源和功能的場(chǎng)景,而容器更適合在更少的服務(wù)器上運(yùn)行更多的應(yīng)用。

大部分情況下,多數(shù)企業(yè)會(huì)同時(shí)使用虛擬機(jī)和容器,特別是考慮到大多數(shù)企業(yè)在此前已經(jīng)廣泛部署了虛擬化技術(shù)。鑒于此,容器和虛擬化應(yīng)當(dāng)會(huì)在相當(dāng)長(zhǎng)時(shí)間內(nèi)共存。

網(wǎng)頁題目:容器與虛擬機(jī)之爭(zhēng)?不存在的
當(dāng)前URL:http://www.muchs.cn/news33/203433.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站營(yíng)銷、靜態(tài)網(wǎng)站移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作