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