栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

简单10步带你快速入门kubevirt创建VM

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单10步带你快速入门kubevirt创建VM

KubeVirt介绍:

基于k8s添加了vm的crd插件,像k8s管理pod一样,管理虚拟机vm。

解决采用Kubernetes但拥有现有基于虚拟机的工作负载的开发团队的需求,这些工作负载不容易被容器化。更具体地说,该技术提供了一个统一的开发平台,开发人员可以在该平台上构建、修改和部署驻留在两个应用程序容器中的应用程序,以及公共共享环境中的虚拟机。

官网:​​​​​​https://kubevirt.io/

架构图:

下面带大家一起体验一下kubevirt

前置条件:

已经部署好了K8S集群,无论是单机还是集群,都可以。

1、查看最新版的kubevirt版本

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

2、在k8s上添加kubevirt相关的资源对象

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

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

3、重要:启用仿真模拟,虽然会影响VM的性能 。

如果不启用,后边可能vm会启动不起来,但是开启后只能在本机访问,不能通过nodePort远程访问,此处建议执行,运行成功后可以尝试修改为false,然后再删除vm,重新创建vm。

kubectl -n kubevirt patch kubevirt kubevirt --type=merge --patch '{"spec":{"configuration":{"developerConfiguration":{"useEmulation":true}}}}'

4、查看当前创建资源,可以看到如下列表的pod,如果只看到operater的话是有问题的。

# kubectl get pods -n kubevirt
NAME                               READY   STATUS    RESTARTS   AGE
virt-api-6677fb87c6-2mphk          1/1     Running   0          93m
virt-api-6677fb87c6-62mc2          1/1     Running   0          93m
virt-controller-5dd87c95c4-c4s2v   1/1     Running   0          92m
virt-controller-5dd87c95c4-wglhh   1/1     Running   0          92m
virt-handler-7rtdq                 1/1     Running   0          92m
virt-operator-85b8997768-sldpt     1/1     Running   0          94m
virt-operator-85b8997768-zx7m6     1/1     Running   0          94m

 5、安装virtctl

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

cp virtctl /usr/local/bin/virtctl

6、 查看virtctl 版本,说明安装成功

# virtctl version
Client Version: version.Info{GitVersion:"v0.52.0", GitCommit:"836afc8c556206fc7715615ddb6516d76f4240db", GitTreeState:"clean", BuildDate:"2022-04-08T16:25:37Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{GitVersion:"v0.52.0", GitCommit:"836afc8c556206fc7715615ddb6516d76f4240db", GitTreeState:"clean", BuildDate:"2022-04-08T16:25:37Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"linux/amd64"}

7、 根据官方给的例子,创建一个vm

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

8、 查看创建的vm,此时状态是Stopped

kubectl get vms
kubectl get vmis

9、启动vm,再查看状态已经是Running,这里如果显示UnSchedule,请按照第3步的设置。

# virtctl start testvm
VM testvm was scheduled to start

 10、进入vm

# virtctl console testvm
Successfully connected to testvm console. The escape sequence is ^]
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
testvm login: cirros
Password: 
$ sudo su -
# pwd
/root
#

11、通过暴露服务,供外部程序访问

 target-port:容器内的端口

 port:集群内通过ClusterIp访问的端口

virtctl expose virtualmachine  testvm --name vmiservice  --target-port 22  --port 8022 --type NodePort
# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
vmiservice   NodePort    10.233.28.141           8022:31536/TCP   40m

 恭喜,通过kube-virt成功创建vm,有问题一起留言讨论。

 欢迎关注,一起学习更多精彩内容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/853691.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号