雲原生架構和容器化的採用正在改變我們開發、部署和管理應用程序的方式。容器提供了速度、靈活性和可擴展性,促進了IT策略的重大轉變。然而,對於許多組織來說,虛擬機(VM)仍然扮演著關鍵角色,特別是在處理舊有或有狀態應用程序時。即使是像高盛這樣的領先金融機構也認識到 虛擬機與容器化工作負載的價值,並正在探索有效管理它們的方法。
這造成了一個潛在的分歧:一方面是容器化的好處,另一方面是對虛擬機的持續需求。KubeVirt 通過將Kubernetes的力量擴展到虛擬機管理來彌合這一鴻溝,使您能夠統一基礎設施,同時實現向雲原生技術的更平滑過渡。
在本文中,我們探討了為什麼 KubeVirt 是希望簡化 IT 操作並在混合基礎設施環境中獲得靈活性的組織的引人注目的解決方案。
什麼是 KubeVirt?
KubeVirt是一個開源項目,將Kubernetes轉變為一個強大的平台,能夠管理容器和虛擬機。簡而言之,KubeVirt 將 Kubernetes 變成您整個基礎設施的單一控制平面。
以下是它的運作方式:
- KubeVirt作為擴展:KubeVirt將自定義資源定義(CRDs)添加到Kubernetes中,引入了一種代表虛擬機器的新對象類型。
- 將虛擬機器視為“pods”:使用KubeVirt,每個虛擬機器在一個專門的pod中運行,將虛擬機器緊密集成到Kubernetes生態系統中。
- 通過Kubernetes簡化虛擬機器管理:您現在可以利用相同的Kubernetes工具(
kubectl
和Kubernetes API)和最佳實踐來創建、啟動、停止、遷移和監控虛擬機器,以及容器化工作負載一起運行。
將KubeVirt視為使Kubernetes能夠講述虛擬化的語言,為您的基礎設施管理開啟了無限可能。
KubeVirt的業務影響
KubeVirt提供了超越技術優雅的具體好處。通過採用KubeVirt,您的組織將獲得以下好處:
- 無縫工作負載管理:打破基於VM的應用程序和容器化工作負載之間的隔閡。使用相同的工具和流程從單一平台管理一切,顯著簡化操作並減少複雜性。
- 增強的資源效率:KubeVirt使您能夠在相同的底層集群硬件上運行傳統虛擬機器和容器。優化資源利用率,提高基礎設施密度,並有可能實現顯著的成本節省。
- 加速現代化:與VMs綁定的傳統應用程式不應該成為創新的障礙。KubeVirt為您提供了一個逐步現代化應用程式的路徑,讓您可以按照自己的步調進行容器化和遷移組件,全部在同一個Kubernetes環境中進行,最大程度地減少中斷。
- 未來優化基礎設施:通過投資於KubeVirt,您將符合雲原生原則,將Kubernetes定位為技術堆棧的基石。這將促進靈活性和敏捷性,使您能夠迅速適應不斷變化的業務需求。
您的組織為什麼應該關心?
KubeVirt提供了顯著的價值,特別是在以下領域:
- IT團隊和DevOps:KubeVirt通過為所有工作負載提供統一的控制平面,簡化運營。它讓您能夠簡化工作流程,減少工具開銷,提高整個團隊的效率。
- 高管:獲得運營靈活性,實現成本降低和走向基礎設施現代化的簡化途徑。KubeVirt將技術投資與長期業務成功相結合。
- 混合工作負載:如果您同時管理傳統基於VM的應用程式和現代容器化部署,KubeVirt是必不可少的。它讓您避免供應商鎖定,減少複雜性,並保持對基礎設施選擇的完全控制。
以下是KubeVirt解決的一些具體問題:
- 為管理VM和容器而煩惱?KubeVirt將它們聚合在一起,使管理變得更加容易。
- 尋找靈活性而不影響現有投資?KubeVirt 讓您在現代化的同時利用您的虛擬機基礎架構。
- 想要提高成本效率和資源使用率?KubeVirt 幫助整合工作負載以實現更好的利用。
- 在遺留應用的複雜遷移中掙扎?使用 KubeVirt 逐步現代化,掌控您的步伐。
開始使用:部署和實施
部署 KubeVirt 需要一個準備良好的 Kubernetes 環境。本節提供詳細指南,幫助您在基礎架構中設置和實施 KubeVirt。
先決條件
在開始之前,請確保滿足以下要求:
1. Kubernetes 集群
您需要一個基於 KubeVirt 版本發布時可用的最新三個 Kubernetes 版本之一的 Kubernetes 集群(或衍生版本如 OpenShift)。
2. Kubernetes API 伺服器配置
Kubernetes API 伺服器必須配置為 --allow-privileged=true
以運行 KubeVirt 的特權 DaemonSet。
3. Kubectl 工具
確保您已安裝並配置 kubectl
客戶端工具以與您的集群互動。
4. 容器運行時支持
KubeVirt 支持以下容器運行時:
Containerd
crio
(搭配runv
)
其他容器運行時也應該可以正常工作,但上述的運行時是主要目標。
5. 硬體虛擬化
建議使用支援虛擬化的硬體。您可以使用 virt-host-validate
來確保您的主機能夠運行虛擬化工作負載:
$ virt-host-validate qemu
網路與安全考量
-
網路配置:規劃您的虛擬機如何連接並與外部網路及其餘 Kubernetes 環境互動。
-
AppArmor 整合:在啟用 AppArmor 的系統中,您可能需要修改 AppArmor 配置檔,以允許執行 KubeVirt 特權容器。例如:
# vim /etc/apparmor.d/usr.sbin.libvirtd
/usr/libexec/qemu-kvm PUx,
# apparmor_parser -r /etc/apparmor.d/usr.sbin.libvirtd
KubeVirt 安裝
要安裝 KubeVirt,請按照以下步驟進行:
1. 安裝 KubeVirt 操作員
KubeVirt 操作員簡化了 KubeVirt 組件的安裝和管理。運行以下命令以部署最新的 KubeVirt 版本:
# Point at latest release
$ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
# Deploy the KubeVirt operator
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-operator.yaml
# Create the KubeVirt CR (instance deployment request) which triggers the actual installation
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-cr.yaml
# Wait until all KubeVirt components are up
$ kubectl -n kubevirt wait kv kubevirt --for condition=Available
2. 非硬體虛擬化的配置
如果無法使用硬體虛擬化,請通過在 KubeVirt CR 中將 useEmulation 設置為 true 來啟用軟體模擬:
$ kubectl edit -n kubevirt kubevirt kubevirt
# Add the following to the kubevirt.yaml file
spec
configuration
developerConfiguration
useEmulationtrue
實施最佳實踐
為了充分利用 KubeVirt,請遵循以下最佳實踐:
1. 進行工作負載評估
優先考慮適合容器化的虛擬機(VMs)。從較不重要的應用程式開始,以獲得實際經驗。
2. 評估網路和儲存
計劃如何將VM網路與現有的Kubernetes網路橋接,並集成儲存解決方案以使用容器儲存接口(CSI)插件來保存持久性資料。
3. 強調監控和管理
使用Kubernetes監控工具或探索KubeVirt特定解決方案,以獲得對VM性能與容器一起的可見性。
4. 即時遷移
啟用並配置即時遷移,將運行中的VM移動到其他計算節點而無需停機。這涉及在KubeVirt CR中設置功能閘和配置遷移特定參數:
apiVersion kubevirt.io/v1
kind KubeVirt
metadata
name kubevirt
namespace kubevirt
spec
configuration
developerConfiguration
featureGates
LiveMigration
migrations
parallelMigrationsPerCluster5
parallelOutboundMigrationsPerNode2
bandwidthPerMigration 64Mi
completionTimeoutPerGiB800
progressTimeout150
在OpenShift(OKD)上的示例安裝
如果您使用OKD,額外的步驟包括配置安全內容約束(SCC):
$ oc adm policy add-scc-to-user privileged -n kubevirt -z kubevirt-operator
在k3OS上的示例安裝
對於k3OS,在部署KubeVirt之前,請確保在所有節點上載入所需的模組:
k3os
modules
kvm
vhost_net
使用此配置重新啟動節點,然後按上述方式部署KubeVirt。
每日開發人員版本的安裝
對於最新的開發人員版本,運行:
$ LATEST=$(curl -L https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/latest)
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-operator.yaml
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-cr.yaml
從源代碼部署
透過遵循這些步驟和最佳實踐,您可以確保 KubeVirt 的實施順利且成功,提供一個統一的基礎架構管理解決方案,充分利用虛擬機和容器的優勢。
實施最佳實踐
遵循這些最佳實踐,以獲得 KubeVirt 的最大效益:
- 進行工作負載評估:並非每個應用程式都立即適合 KubeVirt。優先考慮具有良好容器化潛力的虛擬機。對於重要性較低的應用程式,可以是一個獲得實踐經驗的絕佳方式,同時降低風險。
- 評估網路和存儲:仔細考慮如何將虛擬機網路與您現有的 Kubernetes 網路相連接。計劃使用容器存儲介面(CSI)插件等解決方案來整合持久數據的存儲。
- 強調監控和管理:調整您現有的 Kubernetes 監控工具或探索 KubeVirt 專用的解決方案,以便在容器旁邊獲得虛擬機性能的可見性。
結論
KubeVirt 為尋求獲得雲原生技術好處的組織提供了一條引人注目的道路,同時最大限度地發揮現有虛擬機投資的價值。它提升了運營效率,促進了靈活性,並加速了您的現代化旅程。
Source:
https://dzone.com/articles/kubevirt-implementation-who-needs-it-and-why