一、准备工作:

1.关闭selinux、防火墙

##关闭selinux
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config   #永久生效,但是必须要重启系统。
##立即生效,不需要重启系统
# setenforce 0

##关闭防火墙  
# systemctl stop firewalld
# systemctl disable firewalld

 2.查看系统是否支持KVM虚拟化

egrep '(vmx|svm)' /proc/cpuinfo |wc -l   #输出结果大于一,说明支持
32

3.打开数据转发功能,因为KVM使用的是桥接的方式上网

##开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl -p #生效

二、安装KVM以及依赖包

 1.安装相关包

##安装KVM所有需要的包
yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v virt-install libguestfs-tools
systemctl restart libvirtd #重启#查看虚机列表
#查看虚机列表
[root@k8s ~]# virsh list
 Id    Name                           State
----------------------------------------------------

#查看虚机软件版本
[root@k8s ~]# virsh --version
4.5.0
#查看KVM使用的模块
[root@k8s ~]# lsmod |grep kvm
kvm_intel             188793  21
kvm                   653928  1 kvm_intel
irqbypass              13503  7 kvm

三、因为虚拟机使用宿主机的网段,固使用桥接模式,所以需要配置网桥

1、桌面版本需要关闭NetworkManager服务(非桌面版的跳过此步骤)

#关闭桌面版网络服务(如果此时你使用ssh连接的服务器,那此刻连接会中断)
systemctl stop NetworkManager #停止
systemctl disable NetworkManager #禁止下次自启动

#打开network(NetworkManager和network服务不能共存,关闭NetworkManager后,需要打开network,否则网口状态为down)
systemctl start network
systemctl enable network

 2、创建br0网桥(注意粗体部分)

/etc/sysconfig/network-scripts/ifcfg-eno1

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
BRIDGE=br0
#NAME=eno1
UUID=1331bfac-4037-4192-80ef-f9c310c0e4d2
DEVICE=eno1
ONBOOT=yes

 /etc/sysconfig/network-scripts/ifcfg-br0

TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NM_CONTROLLED=yes
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.0.12
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8

 注意:上面配置的网卡信息为静态地址,如果使用DHCP需要对应修改为BOOTPROTO=dhcp

 3.重启network服务

systemctl restart network

检查网卡状态:

[root@k8s ~]# ip add 
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 94:18:82:01:a4:d4 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::9618:82ff:fe01:a4d4/64 scope link
       valid_lft forever preferred_lft forever11: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 94:18:82:01:a4:d4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.12/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::9618:82ff:fe01:a4d4/64 scope link
       valid_lft forever preferred_lft forever

 

查看网桥状态

brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c296bdbdc    no        eno1    # 我们配置的桥接网卡
virbr0        8000.525400d2488d    yes        virbr0-nic    # NAT模式的网卡

四、配置和安装KVM虚拟机

##创建文件夹
mkdir -p /data2/kvm/image
mkdir -p /data2/iso
##使用FTP上传7.9的ISO文件到/data2/iso,我使用的rz进行上传
CentOS-7-x86_64-DVD-2009.iso

 根据centos7.9的ISO镜像安装centos7.9虚拟机

#执行以下命令创建虚拟机
virt-install \
  --name=centos1 \
  --memory=1024,maxmemory=8096 \
  --vcpus=4,maxvcpus=8 \
  --os-type=linux \
  --os-variant=rhel7 \
  --location=/tmp/CentOS-7-x86_64-DVD-2009.iso \
  --disk path=/data2/kvm/image/centos1.img,size=50 \
  --bridge=br0 \
  --graphics=none \
  --console=pty,target_type=serial  \
  --extra-args="console=tty0 console=ttyS0"

 参数详解:

--name 指定虚拟机的名称

--memory 指定分配给虚拟机的内存资源大小

maxmemory 指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源

--vcpus 指定分配给虚拟机的CPU核心数量

maxvcpus 指定可调节的最大CPU核心数量

--os-type 指定虚拟机安装的操作系统类型

--os-variant 指定系统的发行版本

--location 指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL

--disk path 指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可用大小,单位是G

--bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式

--graphics 指定是否开启图形

--console 定义终端的属性,target_type 则是定义终端的类型

--extra-args 定义终端额外的参数

 

出现如下界面,需要依次配置语言、时区、安装位置、root密码。(网络可以等到虚拟机创建完成后再配置)

centos8 虚拟化windows centos虚拟化kvm_重启

 

 如下图:输入1,按回车

centos8 虚拟化windows centos虚拟化kvm_centos_02

 

 如下图:按enter,然后输入68,按enter

centos8 虚拟化windows centos虚拟化kvm_centos8 虚拟化windows_03

 

 

centos8 虚拟化windows centos虚拟化kvm_centos8 虚拟化windows_04

 

 如下图:输入1,按enter

centos8 虚拟化windows centos虚拟化kvm_centos_05

 

 如下图:选择时区,输入2,按enter

centos8 虚拟化windows centos虚拟化kvm_linux_06

 

 如下图:输入1,按enter

centos8 虚拟化windows centos虚拟化kvm_centos_07

 

 如下图:输入2,选择亚洲,按enter

centos8 虚拟化windows centos虚拟化kvm_重启_08

 

 如下图:按enter,输入65,按enter

centos8 虚拟化windows centos虚拟化kvm_linux_09

 

 

centos8 虚拟化windows centos虚拟化kvm_kvm虚拟机_10

 

 如下图:输入5,按enter,设置安装位置

centos8 虚拟化windows centos虚拟化kvm_centos8 虚拟化windows_11

 

 如下图:输入c,按enter

centos8 虚拟化windows centos虚拟化kvm_重启_12

 

 如下图:输入c,按enter

centos8 虚拟化windows centos虚拟化kvm_linux_13

 

 如下图:输入1,按enter

centos8 虚拟化windows centos虚拟化kvm_kvm虚拟机_14

 

 如下图:输入c,按enter

centos8 虚拟化windows centos虚拟化kvm_centos8 虚拟化windows_15

 

 如下图:输入8,按enter,设置管理员密码

centos8 虚拟化windows centos虚拟化kvm_centos8 虚拟化windows_16

 

 如下图:输入两次密码,然后按enter

centos8 虚拟化windows centos虚拟化kvm_kvm虚拟机_17

 

 如下图:输入yes,按enter

centos8 虚拟化windows centos虚拟化kvm_linux_18

 

 如下图:输入b,按enter,立即安装虚拟机

centos8 虚拟化windows centos虚拟化kvm_重启_19

 五、KVM基础操作

安装完成后,默认进入了创建好的虚拟机,按 Ctrl + ] 可以退出到宿主机

查看虚拟机状态

[root@k8s ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 3     centos1                        running
 5     centos2                        running
 8     centos3                        running
 9     centos4                        running

查看虚拟机配置文件

[root@k8s ]# ls /etc/libvirt/qemu/
damowang.xml  networks
[root@k8s ]# ls /etc/libvirt/qemu/networks/
autostart  default.xml
[root@k8s ]#  ls /etc/libvirt/qemu/networks/autostart/
default.xml

管理虚拟机的常用命令

Virsh语法参考(centos为KVM名字)
virsh list --all                  列出所有的虚拟机
virsh start centos                启动centos虚拟机
virsh shutdown centos             关闭centos虚拟机
virsh destroy centos            强制关闭centos虚拟机
virsh autostart centos          设置centos自动启动
virsh undefine centos            删除centos虚拟机
virsh suspend centos           暂停centos虚拟机
vrish resume centos            恢复centos虚拟机
virsh reboot centos            重启centos虚拟机
virsh edit centos                编辑centos虚拟机