4個用於在雲原生環境中執行虛擬機器的開源工具
遺留工作負載是否阻止你走向雲原生?這裡有四種解決方案,可以在雲原生環境中執行虛擬機器。
許多IT專業人士想走向原生雲。但是,你有傳統的工作負載,比如單體,它只能在虛擬機器上執行。
你可以為雲原生工作負載和遺留工作負載維護單獨的環境。但是,如果你能找到一種方法將虛擬機器整合到你的雲原生設定中,這樣你就可以無縫地管理它們,不是更好嗎?
幸運的是,有這樣的方法。本文介紹了在雲原生環境中執行虛擬機器的四種開源解決方案,只需很少的重新配置或調整。
為什麼在雲原生環境中執行虛擬機器?
在研究這些工具之前,讓我們先看看為什麼能夠在由容器化、鬆散耦合、雲原生工作負載組成的環境中執行虛擬機器很重要。
主要原因很簡單:承載遺留工作負載的虛擬機器不會消失,但維護單獨的託管環境以執行它們是一種負擔。
同時,轉換遺留工作負載以滿足雲原生標準可能是必須的。雖然理論上你會有時間和工程資源來重構遺留工作負載,以便它們可以在雲原生環境中本機執行,但這在現實世界中並不總是可能的。
因此,你需要工具,比如下面描述的四種開源解決方案之一,讓遺留虛擬機器工作負載與雲原生工作負載和平共處。
1.使用KubeVirt執行虛擬機器
在雲原生環境中部署虛擬機器的最流行解決方案可能是KubeVirt。
KubeVirt的工作原理是在Kubernetes pod內執行虛擬機器。如果你想在容器旁邊執行虛擬機器,那麼只需將KubeVirt安裝到現有的Kubernetes叢集中,其中包含:
export RELEASE=v0.35.0# Deploy the KubeVirt operatorkubectl apply -f {RELEASE}/kubevirt-operator.yaml# Create the KubeVirt CR (instance deployment request) which triggers the actual installationkubectl apply -f {RELEASE}/kubevirt-cr.yaml# wait until all KubeVirt components are upkubectl -n kubevirt wait kv kubevirt --for condition=Available
然後,建立並應用一個YAML檔案,該檔案描述了要執行的每個虛擬機器。KubeVirt在一個容器中執行每臺機器,因此從Kubernetes的角度來看,VM只是一個常規的pod(有一些限制,將在下一節中討論)。然而,你仍然可以獲得虛擬機器映象、持久儲存以及固定的CPU和記憶體分配,就像使用傳統虛擬機器一樣。
這意味著KubeVirt基本上不需要更改虛擬機器。你所要做的就是安裝KubeVirt併為虛擬機器建立部署,使其作為pod執行。
2.Virtlet方法
如果你想真正致力於將虛擬機器視為pod,你可能會喜歡Mirantis的開源工具Virtlet。
Virtlet與KubeVirt相似,因為Virtlet還允許你在Kubernetes pod內執行虛擬機器。這兩種工具之間的關鍵區別在於,Virtlet將虛擬機器更深入地整合到Kubernetes pod規範中。這意味著你可以使用Virtlet進行操作,例如將虛擬機器作為守護程式集或複製集的一部分進行管理,而這是使用原生KubeVirt無法完成的(KubeVirt具有相同的功能,但它們是附加元件,而不是Kubernetes的原生部分)。
Mirantis還說,Virtlet通常比KubeVirt提供更好的網路效能,不過這很難確切知道,因為網路配置中涉及到太多變數。
3.ISIO對虛擬機器的支援
如果你不想將虛擬機器當作容器來管理,該怎麼辦?如果你想把它們像虛擬機器一樣對待,同時仍然允許它們與微服務輕鬆整合,該怎麼辦?
最好的解決方案可能是將你的虛擬機器連線到Istio,即開源服務網格。在這種方法下,你可以使用標準虛擬機器工具部署和管理虛擬機器,同時仍然可以透過Istio管理網路、均衡負載等。
不幸的是,將虛擬機器連線到Istio的過程相對繁瑣,目前很難實現自動化。它歸結為在每個要連線的虛擬機器上安裝Istio,為它們配置名稱空間,然後將每個虛擬機器連線到Istio。
4.容器和虛擬機器與OpenStack並排
到目前為止,我們所研究的技術包括採用Kubernetes或Istio等雲原生平臺,並向其新增虛擬機器支援。
另一種方法是採用非雲原生平臺,執行虛擬機器,然後將雲原生工具移植到該平臺上。
如果在OpenStack上同時執行VM和容器,就會得到這樣的結果。OpenStack最初設計用於部署虛擬機器(以及其他型別的資源)以構建私有云。但是OpenStack現在也可以託管Kubernetes。
因此,你可以使用OpenStack部署和管理虛擬機器,同時透過Kubernetes在OpenStack上執行雲原生容器化工作負載。最終會有兩個編排層——底層OpenStack安裝和Kubernetes環境——因此從管理角度來看,這種方法更為複雜。
然而,它的主要好處是,你可以使虛擬機器和容器彼此相對獨立,因為虛擬機器不是Kubernetes的一部分。你也不會侷限於使用Kubernetes工具來管理虛擬機器。您可以將虛擬機器視為標準虛擬機器,將容器視為標準容器。
結論
開源生態系統提供了許多方法來幫助虛擬機器與雲原生工作負載共存。對你來說,最佳解決方案取決於你是想採取以Kubernetes為中心的方法(在這種情況下,KubeVirt或Virtlet是最好的選擇),還是想允許虛擬機器與容器共存,而不與容器緊密整合(在這種情況下,OpenStack最有意義)。如果你只想在網路級別而不是編排級別進行整合,請考慮將虛擬機器連線到Istio服務網格。
來自 “ 開源雲中文社群 ”, 原文作者:開源雲中文社群;原文連結:https://mp.weixin.qq.com/s/4lpTn7a8YXlatBpTugapTw,如有侵權,請聯絡管理員刪除。
相關文章
- 虛擬機器arm虛擬環境搭建虛擬機
- windows terminal 中執行 miniconda 和 pip 的虛擬環境Windows
- Ubuntu虛擬機器進入虛擬環境的流程Ubuntu虛擬機
- Podman中如何執行一個 Linux 虛擬機器?Linux虛擬機
- 一、虛擬機器環境配置虛擬機
- 每週開源點評:容器 vs 虛擬機器、生產環境中的 Istio 等虛擬機
- 第4篇 虛擬機器搭建gitlab環境步驟虛擬機Gitlab
- 虛擬機器環境搭建之vagrant虛擬機
- 虛擬機器基礎環境配置虛擬機
- 在python3.8虛擬環境 執行pip 安裝Excel的庫PythonExcel
- 【Azure 環境】在Azure虛擬機器(經典) 的資源中,使用SDK匯出VM列表的辦法虛擬機
- 在Linux使用虛擬環境Linux
- Windows逆向之配置虛擬機器環境Windows虛擬機
- 零報錯基於Virtualbox虛擬機器搭建Linux(Ubuntu)的Android開發環境虛擬機LinuxUbuntuAndroid開發環境
- TriggerMesh開源用於多雲環境的Knative Event Sources
- 工具資源系列之給虛擬機器裝個centos虛擬機CentOS
- VirtureBox如何執行VM的虛擬機器虛擬機
- (全)Python 的虛擬環境構建和jupyter notebook 中虛擬環境切換Python
- 07、環境-虛擬機器網路設定虛擬機
- 關於Python3中venv虛擬環境Python
- 我搗鼓過的幾種 PHP 開發環境,和對虛擬機器開發環境的想法PHP開發環境虛擬機
- Java 虛擬機器中的執行時資料區分析Java虛擬機
- 工具資源系列之給 windows 裝個 vmware 虛擬機器Windows虛擬機
- python下多環境開發(虛擬環境)Python
- 環境維護(二):虛擬機器中安裝win7虛擬機Win7
- 虛擬環境
- 6個在本地機器上執行 Kubernetes 的工具
- Jtti:怎麼在Linux系統裡執行虛擬機器JttiLinux虛擬機
- 深入理解虛擬機器之虛擬機器位元組碼執行引擎虛擬機
- 深入學習Java虛擬機器——虛擬機器位元組碼執行引擎Java虛擬機
- TensorRT 筆記 - 在 Conda 虛擬環境中安裝筆記
- VMware Fusion 13.6.1 OEM BIOS 2.7 - 在 macOS 中執行 Windows 虛擬機器的最佳方式iOSMacWindows虛擬機
- 虛擬機器搭建測試環境解決方案虛擬機
- RHEL9.4搭建虛擬機器實驗環境虛擬機
- linux虛擬機器執行機必安裝Linux虛擬機
- 7 個值得關注的開源雲原生工具
- 在ubuntun虛擬機器裡安裝goLang語言程式設計環境Ubuntu虛擬機Golang程式設計
- pycharm上的python虛擬環境移到離線機器上PyCharmPython