KubeVirt 在Kubernetes上运行虚拟机

2023年 8月 22日 52.4k 0

一 背景

传统的虚拟机管理平台已经不能适应云原生应用的需求。为了在Kubernetes上运行虚拟机,社区开发了KubeVirt项目。KubeVirt使得在Kubernetes集群上运行虚拟机变得简单高效。

二 概述

KubeVirt利用Kubernetes底层资源,将虚拟机暴露为原生的Kubernetes对象,比如Pod。它为虚拟机提供了生命周期管理、监控、配置等服务。用户可以用kubectl或其他Kubernetes工具来管理虚拟机。

KubeVirt技术满足了已经采用或想要采用Kubernetes的开发团队的需求,但现有的基于虚拟机的工作负载无法轻松容器化。更具体地说,该技术提供了一个统一的开发平台,开发人员可以在这个平台上构建、修改和部署驻留在应用程序容器中的应用程序,也可以在一个公共的、共享的环境中部署虚拟机。

三 相关概念

  • 虚拟机(VirtualMachine):在KubeVirt中,虚拟机是一个自定义资源对象(CRD)。
  • 虚拟机控制器(VirtualMachineController):控制虚拟机的生命周期。
  • 虚拟机实例(VirtualMachineInstance):代表运行中的虚拟机。
  • 数据卷(DataVolume):为虚拟机提供存储。
  • 网络(Network):定义虚拟机网络配置。

四 实操

4.1 部署

  • 部署cli
export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r .tag_name)
echo $KUBEVIRT_VERSION
  • 部署operator

部署KubeVirt Operator命令如下:

kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml

  • 创建crd
kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml

  • 安装Virtctl
wget -O virtctl https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64
chmod +x virtctl

kubectl -n kubevirt get kubevirt

4.2 部署虚拟机

kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml

我们正在创建一个虚拟机,就像我们在我们的环境中创建任何其他Kubernetes资源一样,感谢KubeVirt操作符。现在我们有了一个虚拟机作为Kubernetes资源。
虚拟机资源创建完成后,可以使用标准的'kubectl'命令对虚拟机进行管理。

kubectl get vms
kubectl get vms -o yaml testvm | grep -E 'running:.*|$'

目前虚拟机停止

4.3 启动虚拟机

  • 开启k8s api
kubectl proxy --port=8080
  • 启动虚拟机
./virtctl start testvm
kubectl get vms
kubectl get vmis

4.4 访问虚拟机

./virtctl console testvm

4.5 清理

# 停止虚拟机
./virtctl stop testvm

# 删除虚拟机
kubectl delete vms testvm

五 总结

KubeVirt使在Kubernetes上运行虚拟机像运行容器一样简单。它提供了管理虚拟机的云原生方法。KubeVirt解决了虚拟机和容器统一管理的难题,有效地融合了二者的优势

参考链接

  • kubevirt.io/
  • github.com/kubevirt/ku…

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论