譯者 | 吉鍇
審校 | 孫淑娟
在不討論容器與虛擬機(jī)的優(yōu)缺點的情況下,每個虛擬機(jī)或都包含其完整操作系統(tǒng)的實例,并且可以像獨(dú)立服務(wù)器一樣運(yùn)行。相比之下,在容器化環(huán)境中,多個容器共享一個操作系統(tǒng)實例,而且絕大多數(shù)都是類Linux操作系統(tǒng)。
并非所有應(yīng)用程序服務(wù)都能在容器中良好運(yùn)行,因此企業(yè)需要同時運(yùn)行這兩種服務(wù)。
例如,對于LDAP/Active Directory應(yīng)用程序、標(biāo)記化應(yīng)用程序和具有密集GPU需求的應(yīng)用程序,虛擬機(jī)比容器更好。您可能還有一個遺留應(yīng)用程序,由于某些原因(沒有源代碼、許可證問題、使用小眾語言等)無法實現(xiàn)現(xiàn)代化,因此必須在虛擬機(jī)中運(yùn)行,也有可能需要在特定的操作系統(tǒng)(如Windows)運(yùn)行。
無論應(yīng)用需要虛擬機(jī)或容器的原因是什么,運(yùn)行和管理多個環(huán)境都會增加操作的復(fù)雜性,需要單獨(dú)的控制平面和可能單獨(dú)的基礎(chǔ)架構(gòu)技術(shù)棧。如果您需要運(yùn)行一個或一小組虛擬機(jī),那么這似乎不是什么大事。但如果您有許多這樣的應(yīng)用呢?如果您需要跨不同的云環(huán)境運(yùn)行這些應(yīng)用程序的多個實例,該怎么辦?您的運(yùn)維操作可能會很快變得非常復(fù)雜。
如果可以將虛擬機(jī)作為Kubernetes環(huán)境的一部分來運(yùn)行,那不是很好嗎?
這正是KubeVirt能夠為您做到的。在這篇文章中,我將介紹KubeVirt是什么,使用它的好處,以及如何集成這項技術(shù),以便您可以立即開始使用它。
什么是KubeVirt?
KubeVirt是一個Kubernetes插件,它為Kubernetes提供了在與容器相同的基礎(chǔ)結(jié)構(gòu)上提供、管理和控制虛擬機(jī)的能力。KubeVirt是由云原生計算基金會(CNCF)贊助的開源項目,目前正處于孵化階段。
KubeVirt使Kubernetes能夠使用與容器化工作負(fù)載相同的工具來調(diào)度、部署和管理虛擬機(jī),從而消除了使用不同監(jiān)視和管理工具的單獨(dú)環(huán)境的必要性。為虛擬機(jī)和Kubernetes一起工作提供了可能。
使用KubeVirt,您可以聲明:
- 創(chuàng)建虛擬機(jī)
- 在Kubernetes群集上調(diào)度虛擬機(jī)
- 啟動虛擬機(jī)
- 停止虛擬機(jī)
- 刪除虛擬機(jī)
虛擬機(jī)運(yùn)行在Kubernetes pod中,并利用標(biāo)準(zhǔn)的Kubernetes網(wǎng)絡(luò)和存儲。
Kubernetes 架構(gòu)
資料來源:https://kubevirt.io/user-guide/architecture/
要更深入地連接KubeVirt的工作原理和所涉及的組件,請在kubernetes.io中查看KubeVirt的博客。
KubeVirt的優(yōu)勢有哪些?
KubeVirt與Kubernetes現(xiàn)有的功能和工具(如監(jiān)控、日志記錄、警報和審計)集成,主要優(yōu)勢包括:
- 集中式管理:使用一組工具管理VM和容器。
- 沒有虛擬層性能損失:無需為虛擬機(jī)創(chuàng)建硬件虛擬層。
- 可預(yù)測的性能:KubeVirt使用Kubernetes CPU管理器將vCPU和RAM對應(yīng)到虛擬機(jī)上,以滿足需要可預(yù)測延遲和性能的應(yīng)用。
- 虛擬機(jī)CI/CD:使用和容器應(yīng)用相同的CI/CD工具集成和交付虛擬機(jī)應(yīng)用。
- 授權(quán)管理:KubeVirt提供了一組基于RBAC的集群身份規(guī)則,用于管理訪問KubeVirt資源的用戶授權(quán)。
對VM和容器的集中化管理,簡化了基礎(chǔ)架構(gòu)技術(shù)棧,并提供了各種好處。例如,采用KubeVirt可以消除對虛擬機(jī)和容器的不同流程,從而減少DevOps團(tuán)隊的運(yùn)維工作,加快日常運(yùn)維操作。此外,當(dāng)更多虛擬機(jī)遷移到Kubernetes時,可以明顯感覺到軟件和實用程序使用成本的下降,更不用說虛擬層性能損失了。從長遠(yuǎn)來看,通過利用Kubernetes打包和調(diào)度虛擬應(yīng)用程序的能力,您可以減少基礎(chǔ)架構(gòu)的資源消耗。
Kubernetes和KubeVirt提供更敏捷的部署速度、更低的成本和更簡便的管理。使用Kubernetes自動化VM的生命周期管理,有助于整合虛擬化和容器化兩者類型應(yīng)用的CI/CD流程。通過統(tǒng)一使用Kubernetes對所有應(yīng)用進(jìn)行自動化測試和部署,可以減少部署應(yīng)用時出錯的風(fēng)險并實現(xiàn)更快的迭代速度。
KubeVirt:挑戰(zhàn)和最佳實踐
在部署KubeVirt的時候有幾個地方需要注意。首先,正如我上面提到的,之所以通過虛擬機(jī),而不是容器來管理應(yīng)用的原因之一就是應(yīng)用需要使用例如GPU這樣的專用硬件。在這種情況下,您需要確保集群中至少有一個節(jié)點包含必要的硬件,然后將包含VM的pod固定到具有該硬件的節(jié)點上運(yùn)行。
與任何Kubernetes附件一樣,當(dāng)你有多個集群且運(yùn)行在不同的環(huán)境中時,KubeVirt的管理復(fù)雜性也會大大提高。你需要確保KubeVirt在每個集群中以相同的方式部署,并且有可能會根據(jù)不同集群的硬件環(huán)境進(jìn)行定制化部署。
最后,掌握Kubernete技能的技術(shù)人員現(xiàn)階段仍是很緊俏的。而在KubeVirt上運(yùn)行VM需要能夠理解和編輯YAML配置文件。因此需要確保在KubeVirt上部署VM的從開發(fā)人員和運(yùn)維人員都掌握相關(guān)的技能和工具。
譯者介紹
吉鍇,51CTO社區(qū)編輯,18年軟件開發(fā)經(jīng)驗。現(xiàn)在阿里云全球培訓(xùn)中心任講師,負(fù)責(zé)云計算,云原生,數(shù)字化轉(zhuǎn)型等領(lǐng)域的課程設(shè)計,交付。先后于富士通,聯(lián)想集團(tuán),歡聚時代,搜狗任職,手機(jī)YY首任架構(gòu)師。2014年開始從事專業(yè)技術(shù)培訓(xùn)和顧問工作。
原文標(biāo)題:??Run Containers and VMs Together With KubeVirt??,作者:Kyle Hunter