OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)

《OpenShift / RHEL / DevSecOps 汇总目录》
文本已在OpenShift 4.12 + OpeShift Virtualization 4.11 环境中进行验证,不过下文部分 OpenShift Virtualization 的截图未更新。

文章目录

  • 安装 OpenShift Virtualization 环境
    • 运行环境要求
    • 用 OpenShift Virtualization Operator 安装环境
  • 创建 VM
    • 通过模板创建 VM
    • 基于已有 KVM 虚机镜像创建 VM
  • 了解 VM 和 Pod 、PVC关系
  • 操作管理 VM
    • 为 VM 添加 CDROM
    • VM 快照/恢复
    • 在节点之间实施迁移VM
    • 用命令访问虚拟机
    • 指定 VM 的运行节点
  • 演示视频
  • 参考

安装 OpenShift Virtualization 环境

运行环境要求

在安装 OpenShift Virtualization 前需要确认 OpenShift 集群必须具备以下特性:

  • OpenShift 集群的 Worker 节点主机是 BareMetal 类型,并且节点必须使用 CoreOS (RHCOS) Linux。
  • OpenShift 集群必须使用 IPI 安装方式,并且部署 machine health check 功能。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第1张图片
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第2张图片

用 OpenShift Virtualization Operator 安装环境

用默认配置将 OpenShift Virtualization Operator 安装到 openshift-cnv 项目中。
OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第3张图片
用默认配置创建 HyperConverged 对象。
OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第4张图片
安装完 HyperConverged 可在开发者视图的拓扑中看到安装的资源。
OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第5张图片
安装 HyperConverged 完成后刷新管理员视图,可看到新的“虚拟化”菜单。
OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第6张图片

创建 VM

通过模板创建 VM

  1. 新建一个项目:
$ oc new-project my-vm
  1. 通过菜单进入“虚拟机器”,然后点击页面中“创建”下的“使用向导”创建虚拟机。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第7张图片
  2. 在模板中选中 Fedora,然后点击“下一个”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第8张图片
  3. 点击“定制虚拟机”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第9张图片
  4. 在“常规设置”中将名称设为 “fedora-1”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第10张图片
  5. 无需修改“网络”配置。
  6. 在“存储”中编辑“rootdisk”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第11张图片
  7. 在“编辑磁盘”窗口中去除“应用优化的存储配置集设置”,并确认“访问模式”为“共享的访问”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第12张图片
  8. 在“高级”中修改操作系统的“用户名”、“密码”和“主机名”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第13张图片
  9. 经确认后创建虚拟机。查看 fedora-1 虚拟机的状态为 “Running”,并且“客户机代理”为“OK” 状态。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第14张图片
  10. 在 fedora-1 虚拟机的“控制台”栏目中可登陆该虚拟机。然后在 “fedora-1” 虚拟机中执行以下命令创建一个文件:
$ echo aaa>aaa

OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第15张图片
12. 在 OpenShift 的开发者视图中也可看到 fedora-1 的拓扑。
OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第16张图片

基于已有 KVM 虚机镜像创建 VM

在创建 VM的时候,在“常规设置” 页面中除去 “将可用操作系统源克隆到此虚拟机” 选项。然后确认“引导源” 为 “URL(creates PVC)”,并在 “URL” 中提供一个已有 KVM 虚机镜像的有效地址,例如下图的 “http://10.20.0.254/download/Fedora35.qcow2”。
OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第17张图片
后续配置同以前的说明。在创建VM的时候可以看到 “Importing (CDI)” 的状态和执行情况。
OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第18张图片

了解 VM 和 Pod 、PVC关系

  1. 进入 “虚拟化” 的 “概述”,查看虚拟机的资源监控。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第19张图片
  2. 查看“存储”的“持久性卷声明”,确认其对应了 “fedora-1” 虚拟机的 “rootdisk” 磁盘。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第20张图片
  3. 在“工作负载”的“Pod” 中进入 “fedora-1” 虚拟机对应的 Pod。
    在这里插入图片描述
  4. 在 Pod 中的“终端中”执行 “top” 命令,确认有 “qemu-kvm” 的进程。这说明在 Pod 运行的是基于 KVM 的虚拟机。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第21张图片
  5. 然后删除该 Pod,可以确认 “fedora-1” 虚拟机也会被删除。不过虚拟机会随着 Pod 的恢复也会被恢复。
  6. 再次进入 “fedora-1” 虚拟机的控制台,确认 “aaa” 文件依然存在。

操作管理 VM

为 VM 添加 CDROM

  1. 确认 “fedora-1” 虚拟机为 “停止” 状态。
  2. 进入 “fedora-1” 虚拟机的 “磁盘” 栏目,然后添加 “磁盘”。在 “添加磁盘” 窗口中在 URL 中提供可以访问的 ISO 文件、以及磁盘的 “名称”、“大小”、“类型”、“接口”和“存储类”,最后 “添加”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第22张图片
  3. 在 “fedora-1” 虚拟机的 “详情” 栏目中进入 “引导顺序”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第23张图片
  4. 将前面创建的 CDROM 作为引导源,并将其调整为第一个引导源。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第24张图片
  5. 再次启动 “fedora-1” 虚拟机,可以看到使用 CDROM 启动了虚拟机。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第25张图片
  6. 另外存储的“持久性卷声明”中也加载的 CDROM。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第26张图片

VM 快照/恢复

  1. 进入 “fedora-1” 虚拟机的 “快照” 栏目,然后点击 “进行快照”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第27张图片
  2. 在 “进行快照” 窗口中确认 “我已经了解了这个警告,并希望继续”,然后 “保存”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第28张图片
  3. 确认快照创建的状态。注意:由于此时 VM 还在运行,因此快照的 “恢复” 按钮不能操作。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第29张图片
  4. 再次进入 “fedora-1” 虚拟机的控制台,然后执行以下命令创建 bbb 文件。
$ echo bbb>bbb
  1. 在停止 “fedora-1” 虚拟机运行后,此时创建的快照的 “恢复” 按钮可以操作。点击 “恢复” 后 VM 会被恢复。
  2. 再次启动 “fedora-1” 虚拟机,在 “控制台” 中确认 bbb 文件已经不在了。这说明 VM 已经被快照恢复到以前的状态了。

在节点之间实施迁移VM

注意:虚拟机必须具有一个采用共享 ReadWriteMany(RWX)访问模式的 PVC 才能实时迁移。

  1. 在 “fedora-1” 虚拟机的 “控制台” 中运行以下命令,以证明 VM 一直是处于连续运行状态。
$ while sleep 1; do date; done

OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第30张图片

  1. 查看 “fedora-1” 虚拟机所在的节点,然后在菜单中点击 “从节点到节点迁移”。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第31张图片

  2. 此时再查看 “fedora-1” 虚拟机的状态,确认虚拟机已经运行在其它节点上。另外,在此过程中可以通过虚拟机的控制台可以确认命令还在持续运行,这说明虚拟机没有停。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第32张图片
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第33张图片

  3. 可以在 “fedora-1” 虚拟机的 “事件” 栏目中看到虚拟机被迁移的事件。
    OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机(附视频)_第34张图片

用命令访问虚拟机

  1. 查看 VM 和 VMI 对象。其中 VM 为定制的虚拟机模板,VMI 是根据 VM 创建的虚拟机实例。
$ oc get vm
NAME       AGE    STATUS    READY
fedora-1   100m   Running   True
fedora-2   53m    Running   True
 
$ oc get vmi
NAME       AGE   PHASE     IP            NODENAME   READY
fedora-1   17m   Running   10.128.2.67   worker-2   True
fedora-2   61m   Running   10.128.2.65   worker-2   True
  1. 执行命令下载并安装 virtctl 工具。
$ curl -k -o - https://hyperconverged-cluster-cli-download-openshift-cnv.apps.${cluster_name}.${cluster_domain}/amd64/linux/virtctl.tar.gz | sudo tar -xvzf - -C /usr/local/bin/
  1. 执行命令停止和运行“fedora-1”虚拟机。
[lab-user@provision ~]$ virtctl stop fedora-1
VM fedora-1 was scheduled to stop
[lab-user@provision ~]$ oc get vm
NAME       AGE    STATUS    READY
fedora-1   104m   Stopped   False
fedora-2   57m    Running   True
[lab-user@provision ~]$ virtctl start fedora-1
VM fedora-1 was scheduled to start
[lab-user@provision ~]$ oc get vm
NAME       AGE    STATUS    READY
fedora-1   106m   Running   True
fedora-2   59m    Running   True
  1. 进入“fedora-1”虚拟机控制台,可以通过 “CTRL+]” 退出虚拟机控制台。
$ virtctl console fedora-1
Successfully connected to fedora-1 console. The escape sequence is ^]
[fedora@fedora-1 ~]$ ll
total 4
-rw-r--r--. 1 fedora fedora 4 Apr 30 17:20 aaa
  1. 执行命令迁移虚拟机。
$ virtctl migrate fedora-1

指定 VM 的运行节点

  1. 查看 fedora-1 虚拟机当前运行在 work-2 节点上。
$ oc get vmi fedora-1
NAME       AGE    PHASE     IP            NODENAME   READY
fedora-1   22m    Running   10.128.2.69   worker-2   True
  1. 为 worker-0 节点添加标签 “cpu=fast”
$ oc label node worker-0 cpu=fast
node/worker-0 labeled
$ oc get node -L cpu
NAME       STATUS   ROLES    AGE   VERSION           CPU
master-0   Ready    master   10d   v1.23.5+9ce5071
master-1   Ready    master   10d   v1.23.5+9ce5071
master-2   Ready    master   10d   v1.23.5+9ce5071
worker-0   Ready    worker   10d   v1.23.5+9ce5071   fast
worker-1   Ready    worker   10d   v1.23.5+9ce5071
worker-2   Ready    worker   10d   v1.23.5+9ce5071
  1. 修改 vm/fedora-1,为其指定 “nodeSelector”。
$ oc patch vm/fedora-1 --type merge -p '{"spec":{"template":{"spec":{"nodeSelector":{"cpu":"fast"}}}}}'
virtualmachine.kubevirt.io/fedora-1 patched
  1. 删除 vmi/fedora-1 虚拟机。
$ oc delete vmi/fedora-1
virtualmachineinstance.kubevirt.io "fedora-1" deleted
  1. 确认 fedora-1 虚拟机会在 worker-0 节点上重新运行。
$ oc get vmi fedora-1
NAME       AGE   PHASE     IP            NODENAME   READY
fedora-1   61s   Running   10.129.2.66   worker-0   True

演示视频

在OpenShift上运行容器化虚拟机

参考

https://access.redhat.com/documentation/zh-cn/openshift_container_platform/4.10/html-single/virtualization/index
https://cloud.redhat.com/blog/your-first-vm-with-openshift-virtualization-using-the-web-console
https://github.com/rdoxenham/openshift-virt-labs
https://developer.ibm.com/blogs/a-declarative-coexistence-of-virtual-machines-and-containers/

你可能感兴趣的:(OpenShift,4,KVM,虚拟化,虚拟机,openshift,kubernetes,kubevirt)