Kubernetes 管理虛擬機之 KubeVirt
時間:2023-06-30 13:21:01 | 來源:網(wǎng)站運營
時間:2023-06-30 13:21:01 來源:網(wǎng)站運營
Kubernetes 管理虛擬機之 KubeVirt:
什么是 KubeVirt ?
Kubevirt
是Redhat開源的以容器方式運行虛擬機的項目,以k8s add-on方式,利用k8s CRD為增加資源類型VirtualMachineInstance(VMI), 使用容器的image registry去創(chuàng)建虛擬機并提供VM生命周期管理。 CRD的方式是的kubevirt對虛擬機的管理不局限于pod管理接口,但是也無法使用pod的RS DS Deployment等管理能力,也意味著 kubevirt如果想要利用pod管理能力,要自主去實現(xiàn),目前kubevirt實現(xiàn)了類似RS的功能。 kubevirt目前支持的runtime是docker和runv。
為什么使用 KubeVirt ?
KubeVirt 技術(shù)可滿足已采用或想要采用Kubernetes開發(fā)團隊的需求,但他們擁有現(xiàn)有的基于虛擬機的工作負載,無法輕松地對其進行容器化。更具體地說,該技術(shù)提供了一個統(tǒng)一的開發(fā)平臺,開發(fā)人員可以在該平臺上構(gòu)建,修改和部署駐留在公共共享環(huán)境中的應(yīng)用程序容器和虛擬機中的應(yīng)用程序。
好處是廣泛而重大的。依賴現(xiàn)有基于虛擬機的工作負載團隊有權(quán)快速將應(yīng)用程序容器化。通過將虛擬化工作負載直接放置在開發(fā)工作流中,團隊可以隨時間分解它們,同時仍然可以按需使用剩余的虛擬化組件。
KubeVirt 能做什么 ?
- 利用 KubeVirt 和 Kubernetes 來管理虛擬機
- 一個平臺上將現(xiàn)有的虛擬化與容器化打通并管理
- 支持虛擬機應(yīng)用與容器化應(yīng)用實現(xiàn)內(nèi)部交互訪問
KubeVirt 架構(gòu)
從kubevirt架構(gòu)看如何創(chuàng)建虛擬機,Kubevirt架構(gòu)如圖所示,由4部分組件組成。從架構(gòu)圖看出kubevirt創(chuàng)建虛擬機的核心就是 創(chuàng)建了一個特殊的pod
virt-launcher
其中的子進程包括
libvirt
和
qemu
。做過openstack nova項目的朋友應(yīng)該比較 習慣于一臺宿主機中運行一個
libvirtd
后臺進程,
kubevirt
中采用每個pod中一個
libvirt
進程是去中心化的模式避免因為
libvirtd
服務(wù)異常導(dǎo)致所有的虛擬機無法管理。
虛擬機創(chuàng)建流程
- client 發(fā)送創(chuàng)建VMI命令達到k8s API server.
- K8S API 創(chuàng)建VMI
- virt-controller監(jiān)聽到VMI創(chuàng)建時,根據(jù)VMI spec生成pod spec文件,創(chuàng)建pods
- k8s調(diào)度創(chuàng)建pods
- virt-controller監(jiān)聽到pods創(chuàng)建后,根據(jù)pods的調(diào)度node,更新VMI 的nodeName
- virt-handler監(jiān)聽到VMI nodeName與自身節(jié)點匹配后,與pod內(nèi)的virt-launcher通信,virt-laucher創(chuàng)建虛擬機,并負責虛擬機生命周期管理
項目地址與快速使用
- 項目地址 https://github.com/kubevirt/kubevirt
- 快速使用 https://kubevirt.io//quickstart_minikube/
參考鏈接
- https://kubevirt.io/
- https://remimin.github.io/2018/09/14/kubevirt/
本文由YP小站發(fā)布!