一、安装
1.1 验证开启虚拟化
root@ubuntu-node1:~# grep -E "vmx|svm" /proc/cpuinfo | wc -l
4
如果显示0代表未开启,物理机需要进bios开启,这里使用的是VMware做测试,在虚拟机设置勾选虚拟化选项开启
1.2 安装KVM工具包
Ubuntu 18.04:
root@ubuntu-node1:~# apt install qemu-kvm virt-manager libvirt-daemon-system -y
#验证是否支持kvm
root@ubuntu-node1:~# kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
CentOS 7.X:
[root@localhost ~]# yum install qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-instal
[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl enable libvirtd
#验证是否生成NAT网卡virbr0
[root@localhost ~]# ifconfig virbr0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:71:10:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
1.3 创建NAT网络虚拟机
KVM管理工具:
-
libvirt
使用最多的KVM虚拟化管理工具和应用程序接口,即通过libvirt调用KVM创建虚拟机,libvirt是KVM通用的访问API,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化方案。 -
virsh
是一个常用的管理KVM虚拟化的命令行工具,常用语管理运行在单个宿主机上的虚拟机,virsh是一个使用C语言编写调用libvirt API的虚拟化管理命令行工具。 -
virt-manager
virt-manager是一个虚拟化管理图形软件,其底层也是调用libvirt API来完成对虚拟机的操作,包括虚拟机的创建、删除、启动、停止以及一些简单的监控功能等。 -
openstack
openstack是一个开源的虚拟化编排工具,常用于构建大规模的虚拟化环境,用语管理成千上万虚拟机的创建、启动、删除等整个生命周期。
libvirt结构图:
1.3.1 创建磁盘
#默认保存虚拟机磁盘的路径
root@ubuntu-node1:~# cd /var/lib/libvirt/images/
#创建一个格式为raw大小为20G的磁盘
root@ubuntu-node1:~# qemu-img create -f raw /var/lib/libvirt/images/Centos7-X86_64.raw 20G
#创建一个格式为qcow2磁盘
root@ubuntu-node1:~# qemu-img create -f qcow2 /var/lib/libvirt/images/Centos7-X86_64.qcow2 20G
root@ubuntu-node1:~# ll /var/lib/libvirt/images/
-rw-r--r-- 1 root root 196928 Aug 18 16:10 Centos7-X86_64.qcow2
-rw-r--r-- 1 root root 21474836480 Aug 18 16:09 Centos7-X86_64.raw
1.3.2 创建NAT网络虚拟机
#提前上传安装镜像
root@ubuntu-node1:~# ll /usr/local/src/CentOS-7-x86_64-Minimal-2009.iso
-rw-r--r-- 1 root root 1020264448 Nov 3 2020 /usr/local/src/CentOS-7-x86_64-Minimal-2009.iso
#创建qcow2格式磁盘
root@ubuntu-node1:~# qemu-img create -f qcow2 /var/lib/libvirt/images/Centos7-X86_64.qcow2 20G
#创建默认网络虚拟机
root@ubuntu-node1:~# virt-install --virt-type kvm --name centos7 --ram 1024 --vcpus 2 --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-2009.iso --disk path=/var/lib/libvirt/images/Centos7-X86_64.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --autostart
通过VNC客户端连并安装虚拟机
1.3.3 开始安装
安装完成后重启
root@ubuntu-node1:~# virsh list --all
Id Name State
----------------------------------------------------
- centos7 shut off
#第一次需要手动开启虚拟机
root@ubuntu-node1:~# virsh start centos7
Domain centos7 started
登入虚拟机
通过virt-manager管理虚拟机
root@ubuntu-node1:~# virt-manager
1.4 创建bridge网络虚拟机
桥接网络可以让运行在宿主机上的虚拟机使用和宿主机同网段IP,并且可以从外部直接访问到虚拟机,目前企业中大部分场景都使用桥接网络。
1.4.1 创建br0桥接网卡
Ubuntu 18.04创建桥接网卡:
root@ubuntu-node1:/var/lib/libvirt/images# cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
bridges:
br0:
dhcp4: no
dhcp6: no
addresses: [10.10.100.200/24]
gateway4: 10.10.100.2
nameservers:
addresses: [8.8.8.8]
interfaces:
- eth0
root@ubuntu-node1:/var/lib/libvirt/images# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.100.200 netmask 255.255.255.0 broadcast 10.10.100.255
inet6 fe80::50ed:52ff:fef2:babe prefixlen 64 scopeid 0x20<link>
ether 52:ed:52:f2:ba:be txqueuelen 1000 (Ethernet)
RX packets 532 bytes 66204 (66.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 734 bytes 87184 (87.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:26:6f:96 txqueuelen 1000 (Ethernet)
RX packets 50081 bytes 4120351 (4.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 63993 bytes 25951564 (25.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Centos 7.X创建桥接网卡
[root@node3 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
IPV4_FAILURE_FATAL=no
NAME=br0
DEVICE=br0
IPADDR=10.10.100.108
NETMASK=255.255.255.0
GATEWAY=10.10.100.2
DNS1=120.80.88.88
DNS2=221.5.88.88
ONBOOT=yes
[root@node3 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
#重启网络
[root@node3 ~]# systemctl restart network
[root@node3 ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.100.108 netmask 255.255.255.0 broadcast 10.10.100.255
inet6 fe80::ace2:a4ff:fe43:9459 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:96:d5:af txqueuelen 1000 (Ethernet)
RX packets 539 bytes 28574 (27.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 764 bytes 75512 (73.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:96:d5:af txqueuelen 1000 (Ethernet)
RX packets 2757 bytes 211713 (206.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3759 bytes 373512 (364.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
1.4.2 安装虚拟机
#创建磁盘
root@ubuntu-node1:/var/lib/libvirt/images# qemu-img create -f qcow2 /var/lib/libvirt/images/Centos7-bridge.qcow2 20G
#创建虚拟机
root@ubuntu-node1:~# virt-install --virt-type kvm --name centos7-bridge --ram 1024 --vcpus 2 --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-2009.iso --disk path=/var/lib/libvirt/images/Centos7-bridge.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --autostart
1.4.3 从外部ssh虚拟机
[root@node3 ~]# ssh 10.10.100.133
The authenticity of host '10.10.100.133 (10.10.100.133)' can't be established.
ECDSA key fingerprint is SHA256:TZ2tx+ZXvOlyR3A8Fkje5NbxrvPO7kfFvySa2Oh/ZNs.
ECDSA key fingerprint is MD5:cc:4e:fd:55:85:7e:eb:7d:40:7d:80:d2:d8:0b:e9:0b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.100.133' (ECDSA) to the list of known hosts.
root@10.10.100.133's password:
Last login: Wed Aug 18 18:19:20 2021 from 10.10.100.104