当前位置: 首页 > Linux

【没接触过kubevirt?】15分钟快速入门kubevirt

时间:2023-04-06 06:50:24 Linux

@TOC这篇文章介绍,这篇文章有两个版本,详细版和简明版。前者适合新手,后者适合老手(方便大家搜索,从而过滤掉某些步骤,节省时间成本),按需查看即可。详细版精简版精简版:包含所有步骤,以及命令的执行过程(适合新手)精简版:只包含命令(适合有一定熟练度的人)前言什么是kubevirt?kubevirt是一个以容器模式运行虚拟机的项目。Kubevirt依附于kubernetes集群,通过CustomResourceDefinition(CRD)部署到KubernetesAPI,成为一个资源对象。用法类似于创建deployment,pod...这些资源列表。环境准备环境保障网络出站网络系统服务centos7kubernetes集群官网地址:https://kubevirt.io/详细版本搭建步骤安装KubeVirt[root@master~]#exportRELEASE=v0.35.0[root@master~]#kubectlapply-fhttps://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml[root@master~]#kubectlapply-fhttps://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml[root@master~]#kubectlgetpods-nkubevirtNAMEREADYSTATUSRESTARTSAGEvirt-api-64999f7bf5-fblkh1/1运行05m24svirt-api-64999f7bf5-l8wzr1/1运行05m24svirt-controller-8696ccdf44-k9qpv1/1运行04m52svirt-controller-8696ccdf44-tpxwp1/1运行04m52svirt-handler-kl8tl1/1运行04m52svirt-4b4-c4h/operatorf8fsvirt-8m4foperator-78fbcdfdf4-nvvxx1/1Running08m4s所以服务启动后,安装免费版本[root@master~]#kubectl-nkubevirtwaitkvkubevirt--forcondition=Availablekubevirt.kubevirt.io/kubevirtconditionwithenabledvirtctlenvironment[root@master~]#exportVERSION=v0.41.0[root@master~]#wgethttps://github.com/cubevirt/cubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64[root@mastercubevirt]#cpvirtctl-;v0.41.0-linux-amd64/usr/local/bin/virtctl[root@mastercubevirt]#chmod+x/usr/local/bin/virtctl;ll/usr/local/bin/total64000-r-xr-xr-x。1rootroot17586312Jan1110:52docker-compose-rwxr-xr-x。1rootroot47944250Apr1616:58virtctl[root@mastercubevirt]#virtctlversionClient版本:version.Info{GitVersion:"v0.41.0",GitCommit:"b77b858ac9345ae6858cf409e1833f4548ec2809",GitTree"BuildState-D02e",011-09T13:38:36Z",GoVersion:"go1.13.14",Compiler:"gc",Platform:"linux/amd64"}ServerVersion:version.Info{GitVersion:"{gitVersion}",GitCommit:"{gitCommit}",GitTreeState:"{gitTreeState}",BuildDate:"{buildDate}",GoVersion:"go1.13.14",Compiler:"gc",Platform:"linux/amd64"}创建一个VirtualMachineVirtualMachine(vm)类似于一个docker镜像,一个模板可以启动很多正在运行的实例vmi:[root@masterkubevirt]#cattest.yamlapiVersion:kubevirt.io/v1alpha3kind:VirtualMachinemetadata:labels:kubevirt.io/vm:vm-cirros名称:vm-cirrosspec:运行:假模板:元数据:标签:kubevirt.io/vm:vm-cirros规范:域:设备:磁盘:-磁盘:总线:virtio名称:containerdisk-磁盘:总线:virtio名称:cloudinitdisk机器:类型:“”资源:请求:内存:64MterminationGracePeriodSeconds:0卷:-名称:containerdiskcontainerDisk:图像:kubevirt/cirros-container-disk-demo:最新-CloudInitnocloud:userDataBase64:iyevymlul3nocggly2hvicdwcmludgvkigvkigzybzybzybzybzyb20gy2xvdwqtwqtaw5pdcb1c2c2vvyzgfffvyzgfffffffffffffffinsckinsckinsckname@masterkubertirt@root@masterkirt@root@root@root@root@root#vmNAMEAGEVOLUMEvm-cirros21m启动VirtualMachineInstanceVirtualMachineInstance(vmi)类似于docker镜像的运行实例:[root@masterkubevirt]#virtctlstartvm-cirrosVMvm-cirroswasscheduledtostart[root@masterkubevirt]#kubectlPHASEIPNODENAMEvm-cirros62sRunning10.244.0.15master[root@masterkubevirt]#virtctlconsolevm-cirros#进入虚拟机成功连接到vm-cirros控制台。转义序列是^]loginas'cirros'user。默认密码:'gocubsgo'。使用'sudo'登录root.vm-cirros:cirrosPassword:$ipa1:lo:mtu65536qdiscnoqueueqlen1link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8范围主机lovalid_lftforeverpreferred_lftforeverinet6::1/128范围主机valid_lftforeverpreferred_lftforever2:eth0:<广播、多播、UP、LOWER_UP>mtu1450qdiscpfifo_fastqlen1000链接/以太2e:3e:2a:46:29:94brdff:ff:ff:ff:ff:ffinet10.244.0.16/24brd10.244。0.255scopeglobaleth0valid_lftforeverpreferred_lftforeverinet6fe80::2c3e:2aff:fe46:2994/64scopelinktentativeflags08valid_lftforeverpreferred_lftforever$#按ctrl+]退出虚拟机$[root@masterkubevirt]#Startandstopcommand如果spec.running字段设置为true表示启动,false表示停止**创建VirtualMachine后,可以这样开启或关闭:#启动虚拟机:启动虚拟机virtctlstartvm#Stop虚拟机:停止虚拟机virtctlstopvmkubectl也可以使用:#启动虚拟机:启动虚拟机kubectlpatchvirtualmachinevm--typemerge-p\'{"spec":{"running":true}}'#停止虚拟机:停止虚拟机kubectlpatchvirtualmachinevm--typemerge-p\'{"spec":{"running":false}}'vmexposingVirtualMachineasaservicecanexposeasaservicetheactualservicewillbeavailableaftertheVirtualMachineInstanceis开始了。例如,创建虚拟机后,将SSH端口(22)暴露为NodePort服务[root@masterkubevirt]#virtctlexposevirtualmachinevm-cirros--namevmiservice-node--target-port22--port24--typeNodePortServicevmiservice-node成功暴露给虚拟机vm-cirros[root@masterkubevirt]#kubectlgetsvcNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEkubernetesClusterIP10.96.0.1443/TCP95dvmiservice-nodeNodePort10.106.62none>24:31912/TCP3s最后使用远程工具连接:注意端口使用svcNodePort端口**,如图:简易版安装KubeVirtexportRELEASE=v0.35.0kubectlapply-fhttps://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yamlkubectlapply-fhttps://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yamlkubectlgetpods-nkubevirtkubectl-nkubevirtwaitkvkubevirt--forcondition=Available安装virtctl客户端工具exportVERSION=v0.41.0wgethttps://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64cpvirtctl-v0.41.0-linux-amd64/usr/local/bin/virtctlchmod+x/usr/local/bin/virtctl;ll/usr/local/bin/virtctlversion创建虚拟机[root@masterkubevirt]#cattest.yamlapiVersion:kubevirt.io/v1alpha3kind:VirtualMachinemetadata:labels:kubevirt.io/vm:vm-cirrosname:vm-cirrosspec:running:假模板:元数据:标签:kubevirt.io/vm:vm-cirros规范:域:设备:磁盘:-磁盘:总线:virtio名称:containerdisk-磁盘:总线:virtio名称:cloudinitdisk机器:类型:“”资源:请求:内存:64MterminationGracePeriodSeconds:0卷:-名称:containerdiskcontainerDisk:图像:kubevirt/cirros-container-disk-demo:最新-cloudInitNoCloud:userDataBase64:IyEvYmluL3NoCgplY2hvICdwcmludGVkIGZyb20gY2xvdWQtaW5pdCB1c2VyZGF0YScKname:cloudinitdisk[root@masterkubevirt]#kubectlapply-ftest.yamlvirtualmachine.kubevirt.io/vm-cirroscreated[root@masterkubevirt]#kubectlgetvmNAMEAGEVOLUMEvm-cirros21m启动VirtualMachineInstancevirtctlstartvm-cirroskubectlgetvmivirtctlconsolevm-cirros#进入虚拟机按ctrl+]退出虚拟机启动和停止命令virtctlstartvmvirtctlstopvm#启动虚拟机:启动虚拟机kubectlpatchvirtualmachinevm--typemerge-p\'{"spec":{"running":true}}'#停止虚拟机:停止虚拟机kubectlpatchvirtualmachinevm--typemerge-p\'{"spec":{"running":false}}'vmasaserviceexpose[root@masterkubevirt]#virtctlexposevirtualmachinevm-cirros--namevmiservice-node--target-port22--port24--typeNodePort[root@masterkubevirt]#kubectl获取svc