一文告诉你,如何在 Kubernetes 的容器引擎中运行 KVM 和 VMware VM!
作者?|?Gilson Melo
譯者 | 天道酬勤?責編 | 徐威龍
封圖|?CSDN下載于視覺中國
隨著微服務的出現,人們通常會問:“是否有可能通過Kubernetes上的微服務在基于內核的虛擬機(KVM)或VMware 中運行我的舊虛擬機,還是需要將它們遷移到容器上?” 這個問題的一個可能的答案是:KubeVirt。
KubeVirt項目將Kubernetes變成用于應用程序容器和虛擬機工作負載的編排引擎。它解決了已經采用或想要采用Kubernetes的開發團隊的需求,但是它們具有現有的基于虛擬機的工作負載,因此無法輕松地放入容器中。該技術提供了一個統一的開發平臺,開發人員可以在其中構建、修改和部署駐留在公共共享環境中的應用程序容器和虛擬機中的應用程序。
注意:KubeVirt可以在外部云提供商(例如Oracle云基礎架構)上進行測試,但是此設置尚不適合生產!
開始
適用于Kubernetes的Oracle云基礎架構容器引擎(有時稱為OKE)提供了可靠且可擴展的集成工作流平臺,用于在云中構建、測試、部署和監視代碼。用于Kubernetes的容器引擎可幫助你在云中部署、管理和擴展Kubernetes集群。借助它,你可以通過將Kubernetes與在Oracle 云基礎架構上運行的服務相結合來構建動態的容器化應用程序。
KubeVirt可以部署在容器引擎上,用于具有裸機或虛擬機形狀的Kubernetes工作者節點。如果你的群集工作器節點配備有虛擬機形狀,則KubeVirt以嵌套模式運行你的舊KVM或VMware VM。
要求
?
必須安裝和配置Oracle云基礎架構命令行界面(CLI)和Kubernetes的容器引擎kubectl CLI。有關更多信息,請參見用于Kubernetes的Container Engine文檔:https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengoverview.htm。你還可以使用Cloud Shell,這是一個可從Oracle云基礎架構控制臺訪問的基于瀏覽器的終端。? CLI已預先安裝并在Cloud Shell中配置。
部署
?
請按照以下步驟為Kubernetes的容器引擎部署KubeVirt。?
步驟一:部署KubeVirt管理員
1. 運行用于Kubernetes集群和NodePool節點的容器引擎。
2. 設置要在命令上使用的版本環境變量:
export?KUBEVIRT_VERSION=$(curl?-s?https://api.github.com/repos/kubevirt/kubevirt/releases?|?grep?tag_name?|?grep?-v?--?-?|?sort?-V?|?tail?-1?|?awk?-F':'?'{print?$2}'?|?sed?'s/,//'?|?xargs) echo?$KUBEVIRT_VERSION3. 使用kubectl工具,部署KubeVirt運算符:
kubectl?create?-f?https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml4. 確保KubeVirt管理員正在運行:[root@kvmvbox?~]#?kubectl?get?pods?-n?kubevirt virt-operator-6b5455546b-56dvx?????1/1?????Running???0??????????39h virt-operator-6b5455546b-5pwdj?????1/1?????Running???0??????????39h5.檢查虛擬化擴展。當你將Oracle Cloud Infrastructure VM形狀與Oracle Linux映像一起使用時,這些形狀應默認情況下啟用嵌套虛擬化,并且cpuinfo文件應具有VMX標志。使用egrep命令進行檢查。
egrep?'svm|vmx'?/proc/cpuinfo步驟二:部署KubeVirt
1.通過創建專用的自定義資源來部署KubeVirt:
kubectl?create?-f?https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml2.檢查部署:? ? ??
步驟三:安裝virtctl
另一個二進制文件可快速訪問虛擬機的串行和圖形端口,并處理啟動和停止操作。該工具稱為virtctl,你可以從KubeVirt的發行頁面中檢索它:
curl?-L?-o?virtctl?\ https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64 chmod?+x?virtctl步驟四:測試KubeVirt?
現在是時候測試KubeVirt和Kubernetes的容器引擎了,測試方法是運行遺留的KVM或VMware VM以及容器。KubeVirt提供了一些實驗室,讓你在嘗試遺留的KVM或VMware VM之前對其進行測試。
第一個實驗是使用 KubeVirt,它引導你完成在Kubernetes上創建VM實例的過程,然后向你展示如何使用virtctl與其控制臺進行交互。? ? ? ?
第二個實驗是使用容器化數據導入器(CDI)進行實驗,向你展示如何使用CDI將VM映像導入到持久卷聲明(PVC)中,然后如何定義VM以使用PVC。
?
在容器引擎中運行KVM和VMware VM
如果你打算劃在Kubernetes的容器引擎中運行KVM或VMware VM,則必須首先將磁盤轉換為原始格式。有兩個免費的實用程序可以幫助你做到這一點:Oracle VirtualBox VBoxManage和QEMU磁盤映像實用程序。
VBoxManage是Oracle VM VirtualBox的CLI。你可以使用它從主機OS的命令行控制Oracle VM VirtualBox。? VBoxManage提供了虛擬化引擎的所有功能,它使你可以將磁盤轉換為不同的格式。
在CLI中使用以下命令將VM磁盤轉換為原始格式:
VBoxManage?clonehd?--format?RAW?kvm_qcow2_OR_VMware_vmdk_disk?disk-name.imgQEMU磁盤映像實用程序,稱為QEMU-img,還可以將磁盤轉換為其他格式。例如,要在運行Oracle Linux的計算機上安裝它,請運行以下命令:
將磁盤上載到工作程序節點,并使用hostpath運行它。
創建原始磁盤的Docker映像,并將其上傳到Oracle Cloud Infrastructure Registry之類的公共注冊表中。
克隆磁盤并使用它創建持久卷聲明。
所有這些選項都在KubeVirt GitHub存儲庫和KubeVirt文檔中進行了說明。
?
演示案例
?
下面是KubeVirt與用于Kubernetes的容器引擎一起使用的快速示例。在此演示中,我們使用Microsoft Windows 2012 KVM VM映像,該映像已轉換為原始格式并上傳到工作節點。
現在,它可以與同一pod子網CIDR中的其他本機Nginx容器一起運行。? Windows操作系統現在可以使用內部負載平衡器IP地址訪問Nginx網頁。
因此,Windows KVM VM的行為類似于Kubernetes窗格,這使其可以與其他用于Kubernetes服務的容器引擎進行本地交互。? ? ? ?
如果有不清楚的地方或其他意見,歡迎評論告訴我們。
原文:https://dzone.com/articles/kvm-vmware-vms-in-container-engine-for-kubernetes
同時,歡迎所有開發者掃描下方二維碼填寫《開發者與AI大調研》,只需2分鐘,便可收獲價值299元的「AI開發者萬人大會」在線直播門票!
推薦閱讀:在容器上構建持續部署及最佳實踐初探在Kubernetes上部署一個簡單的、類PaaS的平臺,原來這么容易!全球呼吸機告急!醫療科技巨頭美敦力“開源”設計圖和源代碼互聯網之父確診新冠,一代傳奇:任谷歌副總裁、NASA 訪問科學家微軟為一人收購一公司?破解索尼程序、寫黑客小說,看他彪悍的程序人生!2020年,這20個大家都認識的加密交易所過得怎么樣?真香,朕在看了總結
以上是生活随笔為你收集整理的一文告诉你,如何在 Kubernetes 的容器引擎中运行 KVM 和 VMware VM!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4K修复版《海上钢琴师》登陆全国院线,一
- 下一篇: 如何使用 Mybatis 实现数据库 C