KubeVirt - 在Kubernetes上运行虚拟机
【摘要】 一 背景传统的虚拟机管理平台已经不能适应云原生应用的需求。为了在Kubernetes上运行虚拟机,社区开发了KubeVirt项目。KubeVirt使得在Kubernetes集群上运行虚拟机变得简单高效。二 概述KubeVirt利用Kubernetes底层资源,将虚拟机暴露为原生的Kubernetes对象,比如Pod。它为虚拟机提供了生命周期管理、监控、配置等服务。用户可以用kubectl或其...
一 背景
传统的虚拟机管理平台已经不能适应云原生应用的需求。为了在Kubernetes上运行虚拟机,社区开发了KubeVirt项目。KubeVirt使得在Kubernetes集群上运行虚拟机变得简单高效。
二 概述
KubeVirt利用Kubernetes底层资源,将虚拟机暴露为原生的Kubernetes对象,比如Pod。它为虚拟机提供了生命周期管理、监控、配置等服务。用户可以用kubectl或其他Kubernetes工具来管理虚拟机。
KubeVirt技术满足了已经采用或想要采用Kubernetes的开发团队的需求,但现有的基于虚拟机的工作负载无法轻松容器化。更具体地说,该技术提供了一个统一的开发平台,开发人员可以在这个平台上构建、修改和部署驻留在应用程序容器中的应用程序,也可以在一个公共的、共享的环境中部署虚拟机。
三 相关概念
- 虚拟机(VirtualMachine):在KubeVirt中,虚拟机是一个自定义资源对象(CRD)。
- 虚拟机控制器(VirtualMachineController):控制虚拟机的生命周期。
- 虚拟机实例(VirtualMachineInstance):代表运行中的虚拟机。
- 数据卷(DataVolume):为虚拟机提供存储。
- 网络(Network):定义虚拟机网络配置。
四 实操
4.1 部署
- 部署cli
javascript
复制代码
export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r .tag_name)
echo $KUBEVIRT_VERSION
- 部署operator
部署KubeVirt Operator命令如下:
javascript
复制代码
kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml
- 创建crd
shell
复制代码
kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml
- 安装Virtctl
bash
复制代码
wget -O virtctl https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64
chmod +x virtctl
javascript
复制代码
kubectl -n kubevirt get kubevirt
4.2 部署虚拟机
javascript
复制代码
kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml
我们正在创建一个虚拟机,就像我们在我们的环境中创建任何其他Kubernetes资源一样,感谢KubeVirt操作符。现在我们有了一个虚拟机作为Kubernetes资源。 虚拟机资源创建完成后,可以使用标准的'kubectl'命令对虚拟机进行管理。
javascript
复制代码
kubectl get vms
kubectl get vms -o yaml testvm | grep -E 'running:.*|$'
目前虚拟机停止
4.3 启动虚拟机
- 开启k8s api
shell
复制代码
kubectl proxy --port=8080
- 启动虚拟机
sql
复制代码
./virtctl start testvm
kubectl get vms
kubectl get vmis
4.4 访问虚拟机
javascript
复制代码
./virtctl console testvm
4.5 清理
bash
复制代码
# 停止虚拟机
./virtctl stop testvm
# 删除虚拟机
kubectl delete vms testvm
五 总结
KubeVirt使在Kubernetes上运行虚拟机像运行容器一样简单。它提供了管理虚拟机的云原生方法。KubeVirt解决了虚拟机和容器统一管理的难题,有效地融合了二者的优势
参考链接
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)