KubeVirt - 在Kubernetes上运行虚拟机

举报
kaliarch 发表于 2023/10/21 10:06:22 2023/10/21
【摘要】 一 背景传统的虚拟机管理平台已经不能适应云原生应用的需求。为了在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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。