安装依赖工具
x84
1
| dnf install virt-install virt-manager libvirt-daemon-qemu virt-viewer
|
arm
1
| dnf install virt-install virt-manager libvirt-daemon-qemu edk2-aarch64.noarch virt-viewer
|
启用
1
| systemctl start libvirtd && systemctl enable libvirtd
|
准备虚拟机磁盘文件
1. 使用dnf包管理器安装qemu-img
qemu-img是一种用于创建、转换和管理各种虚拟机磁盘映像文件格式的工具。-y
选项表示自动确认所有提示,不需要用户交互。
2. 定义名为vmPool
的存储池
存储池类型被设定为dir
,表示该存储池存放在一个目录中。并指定存储池路径--target /mnt/vm/images/
。
1
| virsh pool-define-as vmPool --type dir --target /mnt/vm/images/
|
3. 创建存储池
创建一个名为vmPool
的存储池
4. 启动存储池
5. 设置存储池为自启动
1
| virsh pool-autostart vmPool
|
6. 创建磁盘映像文件
在vmPool
存储池中创建一个名为master.img
的磁盘映像文件,该映像文件的总容量为200GB,实际已分配的存储为1GB,文件格式为qcow2。以此类推创建node1、node2。
1
| virsh vol-create-as --pool vmPool --name master.img --capacity 200G --allocation 1G --format qcow2
|
1
| virsh vol-create-as --pool vmPool --name node1.img --capacity 300G --allocation 1G --format qcow2
|
1
| virsh vol-create-as --pool vmPool --name node2.img --capacity 300G --allocation 1G --format qcow2
|
打开 VNC 防火墙端口
方法一
1. 查询端口
1
| netstat -lntup | grep qemu-kvm
|
2. 打开 VNC 的防火墙端口
假设端口从 5900 开始,参考命令如下:
1 2 3
| firewall-cmd --zone=public --add-port=5900/tcp firewall-cmd --zone=public --add-port=5901/tcp firewall-cmd --zone=public --add-port=5902/tcp
|
方法二
直接关闭防火墙
1
| systemctl stop firewalld && systemctl disable firewalld
|
准备虚拟机配置文件
创建虚拟机需要虚拟机配置文件。假设配置文件为 master.xml ,以虚拟机 hostname 为 k8s-master 的节点为例,node节点或者其他节点的配置根据需求自行修改就行,参考配置如下:
由于虚拟机相关配置必须唯一,新增虚拟机需要适配修改如下内容,保证虚拟机的唯一性:
name:虚拟机 hostname,建议尽量小写。例中为 k8s-master
nvram:nvram的句柄文件路径,需要全局唯一。例中为 /var/lib/libvirt/qemu/nvram/k8s-master.fd
disk 的 source file:虚拟机磁盘文件路径。例中为 /home/vm/images/master.img
interface 的 mac address:interface 的 mac 地址。例中为 52:54:00:00:00:80
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| <domain type='kvm'> <name>k8s-master</name> <memory unit='GiB'>8</memory> <currentMemory unit='GiB'>8</currentMemory> <vcpu placement='static'>8</vcpu> <os> <type arch='x86_64' machine='pc-i440fx-6.2'>hvm</type> <nvram>/var/lib/libvirt/qemu/nvram/k8s-master.fd</nvram> </os> <features> <acpi/> <apic/> </features> <cpu mode='host-passthrough'> <topology sockets='2' cores='4' threads='1'/> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/home/vm/images/master.img'/> <target dev='vda' bus='virtio'/> <boot order='1'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/home/openEuler-23.09-x86_64-dvd.iso'/> <readonly/> <target dev='sdb' bus='scsi'/> <boot order='2'/> </disk> <interface type='bridge'> <mac address='ce:a0:ec:99:ec:e8'/> <source bridge='br0'/> <model type='virtio'/> </interface> <interface type='bridge'> <mac address='96:aa:e6:6b:b8:a2'/> <source bridge='br1'/> <model type='virtio'/> </interface> <console type='pty'/> <video> <model type='virtio'/> </video> <controller type='scsi' index='0' model='virtio-scsi'/> <controller type='usb' model='ehci'/> <input type='tablet' bus='usb'/> <input type='keyboard' bus='usb'/> <graphics type='vnc' listen='0.0.0.0'/> <seclabel type='dynamic' model='dac' relabel='yes'/> </devices> </domain>
|
安装虚拟机
1. 创建并启动虚拟机
1
| virsh define master.xml && virsh start k8s-master
|
2. 获取虚拟机的 VNC 端口号
1
| virsh vncdisplay k8s-master
|
3. 使用虚拟机连接工具
例如 VNC Viewer 远程连接虚拟机,并根据提示依次选择配置,完成系统安装。此处使用:MobaXterm,点击获取:注册码
4. 设置虚拟机 hostname,例如设置为 k8s-master
1
| hostnamectl set-hostname k8s-master
|
命令详解
virsh命令详解