文章目录

  • 本文介绍
  • 前言
  • 环境准备
  • 详细版
    • 搭建步骤
      • 安装KubeVirt
      • 安装virtctl客户端工具
      • 创建VirtualMachine
      • 启动VirtualMachineInstance
      • 启动和停止命令
      • vm作为服务公开
  • 简洁版
    • 安装KubeVirt
    • 安装virtctl客户端工具
    • 创建VirtualMachine
    • 启动VirtualMachineInstance
    • 启动和停止命令
    • vm作为服务公开

本文介绍

本文有两个版本,详细版、简洁版

前者适合新手,后者适合老手**(方便大家查找,从而过滤掉某些步骤,节约时间成本)** 所以大家按需查看哟。

详细版 简洁版

简洁版:包含所有步骤,以及命令的执行过程(适合新手)

简洁版:只包含命令(适合有一定熟练度的人)

前言

  • 什么是kubevirt?

    kubevirt是一个容器方式运行虚拟机的项目。kubevirt是附加kubernetes集群上的,它是通过 CustomResourceDefinition(CRD)部署到Kubernetes API变成资源对象。使用方式类似创建deploy、pod…这些资源清单。

环境准备

  • 环境保证网络出外网
系统 服务
centos7 kubernetes集群

官网地址:https://kubevirt.io/

详细版

搭建步骤

安装KubeVirt

[root@master ~]# export RELEASE=v0.35.0
[root@master ~]# kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml
[root@master ~]# kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml
[root@master ~]# kubectl get pods -n kubevirt
NAME                               READY   STATUS    RESTARTS   AGE
virt-api-64999f7bf5-fblkh          1/1     Running   0          5m24s
virt-api-64999f7bf5-l8wzr          1/1     Running   0          5m24s
virt-controller-8696ccdf44-k9qpv   1/1     Running   0          4m52s
virt-controller-8696ccdf44-tpxwp   1/1     Running   0          4m52s
virt-handler-kl8tl                 1/1     Running   0          4m52s
virt-operator-78fbcdfdf4-468h4     1/1     Running   0          8m4s
virt-operator-78fbcdfdf4-nvvxx     1/1     Running   0          8m4s

所以服务启动后,执行下面这条命令

[root@master ~]# kubectl -n kubevirt wait kv kubevirt --for condition=Available
kubevirt.kubevirt.io/kubevirt condition met

安装virtctl客户端工具

[root@master ~]# export VERSION=v0.41.0
[root@master ~]# wget https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64
[root@master kubevirt]# cp virtctl-v0.41.0-linux-amd64 /usr/local/bin/virtctl
[root@master kubevirt]# chmod +x /usr/local/bin/virtctl ; ll /usr/local/bin/
total 64000
-r-xr-xr-x. 1 root root 17586312 Jan 11 10:52 docker-compose
-rwxr-xr-x. 1 root root 47944250 Apr 16 16:58 virtctl
[root@master kubevirt]# virtctl version
Client Version: version.Info{GitVersion:"v0.41.0", GitCommit:"b77b858ac9345ae6858cf409e1833f4548ec2809", GitTreeState:"clean", BuildDate:"2020-11-09T13:38:36Z", GoVersion:"go1.13.14", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{GitVersion:"{gitVersion}", GitCommit:"{gitCommit}", GitTreeState:"{gitTreeState}", BuildDate:"{buildDate}", GoVersion:"go1.13.14", Compiler:"gc", Platform:"linux/amd64"}

创建VirtualMachine

  • VirtualMachine(vm)类似于docker镜像一个模板可以启动很多运行实例vmi:
[root@master kubevirt]# cat test.yaml
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:labels:kubevirt.io/vm: vm-cirrosname: vm-cirros
spec:running: falsetemplate:metadata:labels:kubevirt.io/vm: vm-cirrosspec:domain:devices:disks:- disk:bus: virtioname: containerdisk- disk:bus: virtioname: cloudinitdiskmachine:type: ""resources:requests:memory: 64MterminationGracePeriodSeconds: 0volumes:- name: containerdiskcontainerDisk:image: kubevirt/cirros-container-disk-demo:latest- cloudInitNoCloud:userDataBase64: IyEvYmluL3NoCgplY2hvICdwcmludGVkIGZyb20gY2xvdWQtaW5pdCB1c2VyZGF0YScKname: cloudinitdisk
[root@master kubevirt]# kubectl apply -f test.yaml
virtualmachine.kubevirt.io/vm-cirros created[root@master kubevirt]# kubectl get vm
NAME        AGE   VOLUME
vm-cirros   21m

启动VirtualMachineInstance

  • VirtualMachineInstance(vmi)类似于docker镜像的运行实例容器:
[root@master kubevirt]# virtctl start vm-cirros
VM vm-cirros was scheduled to start
[root@master kubevirt]# kubectl get vmi
NAME        AGE   PHASE     IP            NODENAME
vm-cirros   62s   Running   10.244.0.15   master[root@master kubevirt]# virtctl console vm-cirros  # 进入虚拟机
Successfully connected to vm-cirros console. The escape sequence is ^]login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
vm-cirros login: cirros
Password:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000link/ether 2e:3e:2a:46:29:94 brd ff:ff:ff:ff:ff:ffinet 10.244.0.16/24 brd 10.244.0.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::2c3e:2aff:fe46:2994/64 scope link tentative flags 08valid_lft forever preferred_lft forever$    #  按 ctrl+]  退出虚拟机
$ [root@master kubevirt]#

启动和停止命令

spec.running 字段如果设置为true为启动、false为停止**

  • 创建 VirtualMachine后,可以像这样打开或关闭它:
# Start the virtual machine:  启动虚拟机
virtctl start vm   # Stop the virtual machine:  停止虚拟机
virtctl stop vm
  • kubectl也可以使用:
# Start the virtual machine:  启动虚拟机
kubectl patch virtualmachine vm --type merge -p \'{"spec":{"running":true}}'# Stop the virtual machine:  停止虚拟机
kubectl patch virtualmachine vm --type merge -p \'{"spec":{"running":false}}'

vm作为服务公开

VirtualMachine可以作为服务公开。实际服务将在 VirtualMachineInstance 启动后可用。

例如, 在创建VirtualMachine 后,将 SSH端口 (22) 公开为NodePort服务

[root@master kubevirt]# virtctl expose virtualmachine  vm-cirros --name vmiservice-node  --target-port 22  --port 24 --type NodePort
Service vmiservice-node successfully exposed for virtualmachine vm-cirros
[root@master kubevirt]# kubectl get svc
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes        ClusterIP   10.96.0.1       <none>        443/TCP        95d
vmiservice-node   NodePort    10.106.62.191   <none>        24:31912/TCP   3s

最后使用远程工具连接即可:

** 注意 端口使用svc NodePort端口,如图所示:

简洁版

安装KubeVirt

export RELEASE=v0.35.0
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml
kubectl get pods -n kubevirt
kubectl -n kubevirt wait kv kubevirt --for condition=Available

安装virtctl客户端工具

export VERSION=v0.41.0
wget https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64
cp virtctl-v0.41.0-linux-amd64 /usr/local/bin/virtctl
chmod +x /usr/local/bin/virtctl ; ll /usr/local/bin/
virtctl version

创建VirtualMachine

[root@master kubevirt]# cat test.yaml
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:labels:kubevirt.io/vm: vm-cirrosname: vm-cirros
spec:running: falsetemplate:metadata:labels:kubevirt.io/vm: vm-cirrosspec:domain:devices:disks:- disk:bus: virtioname: containerdisk- disk:bus: virtioname: cloudinitdiskmachine:type: ""resources:requests:memory: 64MterminationGracePeriodSeconds: 0volumes:- name: containerdiskcontainerDisk:image: kubevirt/cirros-container-disk-demo:latest- cloudInitNoCloud:userDataBase64: IyEvYmluL3NoCgplY2hvICdwcmludGVkIGZyb20gY2xvdWQtaW5pdCB1c2VyZGF0YScKname: cloudinitdisk
[root@master kubevirt]# kubectl apply -f test.yaml
virtualmachine.kubevirt.io/vm-cirros created[root@master kubevirt]# kubectl get vm
NAME        AGE   VOLUME
vm-cirros   21m

启动VirtualMachineInstance

virtctl start vm-cirros
kubectl get vmi
virtctl console vm-cirros  # 进入虚拟机
按 ctrl+]  退出虚拟机

启动和停止命令

virtctl start vm
virtctl stop vm# Start the virtual machine:  启动虚拟机
kubectl patch virtualmachine vm --type merge -p \'{"spec":{"running":true}}'# Stop the virtual machine:  停止虚拟机
kubectl patch virtualmachine vm --type merge -p \'{"spec":{"running":false}}'

vm作为服务公开

[root@master kubevirt]# virtctl expose virtualmachine  vm-cirros --name vmiservice-node  --target-port 22  --port 24 --type NodePort
[root@master kubevirt]# kubectl get svc

[没接触过kubevirt?]15分钟快速入门kubevirt相关推荐

  1. 如何15分钟快速入门LaTeX公式?

    LaTeX 是一种基于 ΤΕΧ 的排版系统,其中非常突出的是方便而强大的数学公式排版能力.日常大家在整理诸如数学.化学等学科的思维导图时,经常会有输入公式的需求. 所以,ProcessOn产研团队快马 ...

  2. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

  3. 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门

    概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 . RedisTem ...

  4. Dart语言——45分钟快速入门(下)

    类和对象 类的定义 // Dart中定义一个类 class Person {String name;int age;Person(String name, int age) {this.name = ...

  5. 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试

    每天15分钟JMeter入门篇(一):Hello JMeter 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试 每天15分钟JMeter入门篇(三):认识JMeter的逻辑控制器 ...

  6. Dart语言——45分钟快速入门(上)

    文章目录 前言 视频课程 环境准备 安装Dart SDK 配置环境变量 配置 VSCode 编辑器 测试环境 基础语法 代码注释 内置数据类型 变量与常量 定义变量 定义常量 内置类型的常用操作 数值 ...

  7. thinkcmf搭建教程_5分钟快速入门

    # 5分钟快速入门 [TOC=1,5] ## 1.创建模板目录 在`public/themes/`目录下创建`quick_start`目录 ## 2.添加模板描述文件 在`public/themes/ ...

  8. 不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门

    Vue.js--60分钟快速入门 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的 ...

  9. 视频教程-.NET MVC5—60分钟快速入门学会《增删改查》-.NET

    .NET MVC5-60分钟快速入门学会<增删改查> 从事软件开发7年,熟悉软件开发流程,精通WEB系统程序开发.先后参与随州公安无纸化办公软件.速成会计财务管理软件.明源地产ERP等重大 ...

最新文章

  1. Qt opencv 程序异常结束,crashed
  2. 【408预推免复习】计算机组成原理之计算机的发展及应用
  3. 【剑指offer】21、调整数组顺序使奇数在偶数前面
  4. Cache替换算法:LRU与LFU的区别
  5. 【Python 必会技巧】使用 join() 方法将序列中的元素拼接成字符串
  6. oracle主备不同步,主备环境下数据不一致重新部署复制
  7. 七夕来临!来支付宝“结个婚”吧 全国5个省市可用
  8. 苹果搜索机器人因代理服务器配置不当泄漏内部 IP
  9. 9. explain
  10. 创建My SQL 数据库
  11. 【Java基础】使用NumberFormat 、DecimalFormat进行数字格式化
  12. LaTeX 换行、换页、空白空间
  13. 额~~~字符表情大全(写博客需要)
  14. png图片透明部分点击
  15. 计算机连不了无线网络,如何解决电脑连接不上家里路由器的无线网
  16. 百度地图动态修改图标
  17. 【Solidworks崩溃解决办法之一】【关闭OpenGL】
  18. 用友加密服务器修改密码,用户密码怎么修改?
  19. “因为无法从捐赠中抽成,谷歌把我的开源 App 下架了!”
  20. AMOLED真的比LCD屏幕更伤眼吗

热门文章

  1. mac解压ndk.bin文件
  2. mindspore.Profiler如何获取算子的aicore_time、mte1_time等数据
  3. 频谱分析仪RBW和VBW
  4. 数学建模常用算法—灰色关联分析法(GRA)
  5. ArcGIS API for JavaScript如何使用本地的字体库
  6. 多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序
  7. magento 多货币paypal支付扩展
  8. 移动开发UI设计、素材网站
  9. 计算机科学与技术考苏卅大学怎么样,【图片】18年苏州大学计算机872考研经验分享【苏州大学研究生吧】_百度贴吧...
  10. 转转验机源代码+后台管理