1. KVM安装
1.1 配置确认
1 |
首先需要确认服务器的硬件是否支持虚拟化,执行如下命令确认 |
1 2 3 |
jerrywang@lambda-1:~$ egrep -c '(vmx|svm)' /proc/cpuinfo 40 #如果输出结果大于0,意味着服务器硬件是支持虚拟化的。否则,重启进入BIOS设置中启用VT技术。 |
1.2 安装KVM
安装KVM及依赖项
1 2 |
sudo apt update sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager |
启动libvirtd服务,并设置开机自动启动
1 2 |
sudo systemctl start libvirtd.service sudo systemctl enable libvirtd.service |
1 |
执行service libvirtd status查看libvirtd服务状态,如图 |

1.3 桥接网络配置
1 2 3 |
一般虚拟机网络配置有Bridge、NAT等几种模式。NAT模式下,虚拟机不需要配置自己的IP,通过宿主机来访问外部网络;Bridge模式下, 虚拟机需要配置自己的IP,然后虚拟出一个网卡, 与宿主机的网卡一起挂到一个虚拟网桥上(类似于交换机)来访问外部网络,这种模式下,虚拟机拥有独立的IP,局域网其它主机能直接通过IP与其通信。简单理解,就是NAT模式下,虚机隐藏在宿主机后面了,虚机能通过宿主机访问外网,但局域网其它主机访问不到它,Bridge模式下,虚机跟宿主机一样平等地存在,局域网其它主机可直接通过IP与其通信。一般我们创建虚机是用来部署服务供使用的, 所以都是用Bridge模式。 ubuntu 18中,网络配置通过netplan来实现了,如下,更改配置文件 /etc/netplan/50-cloud-init.yaml |
1 |
sudo vim /etc/netplan/50-cloud-init.yaml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
network: version: 2 renderer: networkd ethernets: eno1: addresses: - 192.168.188.239/24 gateway4: 192.168.188.1 nameservers: addresses: [8.8.8.8,114.114.114.114] optional: true bridges: br0: interfaces: [eno1] dhcp4: no addresses: [192.168.188.201/24] gateway4: 192.168.188.1 nameservers: addresses: [114.114.114.114,8.8.8.8] |
1 2 |
将宿主机原有网卡eno1挂到网桥br0上,并指定IP地址为192.168.188.201,nameservers指定DNS服务器。 修改完后,通过sudo netplan apply重启网络服务生效,然后通过ifconfig查看, |

1 2 |
原来挂在eno1网卡下的IP现在挂到了br0上,宿主机及所有其它虚拟机都通过该网桥来与外部通讯。我们也可以通过brctl show来直观地查看. 目前因为还没虚机,所以只有宿主机的网卡eno1挂在网桥br0上。同时也可以看到docker容器也是通过网桥docker0来通讯的. |

2. 虚拟机安装
2.1 安装虚拟机
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 61 62 63 64 |
#创建虚拟机 sudo virt-install \ --name=demo-02 \ --memory=8192,maxmemory=8192 \ --vcpus=8,maxvcpus=8 \ --os-type=linux \ --os-variant=rhel7 \ --location=/home/iso/Rocky-8.5-x86_64-dvd1.iso \ --disk path=/data/Software/kvm-virtual/linux/demo-02/demo-02.qcow2,size=300,format=qcow2,bus=virtio \ --bridge=br0 --graphics=none --console=pty,target_type=serial \ --extra-args="console=tty0 console=ttyS0" Vnc方式安装 sudo virt-install \ --name=demo-02 \ --memory=8192,maxmemory=8192 \ --vcpus=8,maxvcpus=8 \ --os-type=linux \ --os-variant=rhel7 \ --location=/home/iso/Rocky-8.5-x86_64-dvd1.iso \ --disk path=/data/Software/kvm-virtual/linux/demo-02/demo-02.qcow2,size=300,format=qcow2,bus=virtio \ --bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole #参数详解: --name:[虚拟机名称] --memory=16384,maxmemory=16384:[配置内存大小] -–vcpus=4[分配给虚拟机的cpu个数] --location:[指定镜像路径] –os-variant=rhel7; --disk #指定虚拟机qcow2文件路径 size #虚拟机文件大小,单位GB(raw,立即给300G,qcow2用多少磁盘就给多少,但是不能超过size给的总大小300) bus #虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里推荐使用virtio maxvcpus=4 当我们KVM 虚机上运行多个程序,cpu 负载不过来,那么怎么能热添加cpu 来分担负载? 首先需要我们得创建虚机得时候cpu 得配置有设置maxvcpu 得参数,如果不指定maxvcpu 个数,那么我们最大得cpu 个数,实际为我们vcpu个数。 这个概念和我们热添加内存时一个概念。 只有配置maxvcpu 个数才能热添加cpu ,而且添加得cpu 个数不能大于maxvcpu --console pty,target_type=serial #console控制通道 --graphics=none #图形化参数(不调用图形化界面) --extra-args 'console=ttyS0,115200n8 serial' #文本输出 --cdrom :指定CentOS镜像ISO文件路径 --localtion : 如果在命令行情况下通过cdrom指定iso镜像则无法在控制台打印日志,所以这里推荐使用--location参数 补充说明: cache #虚拟机磁盘的cache类型 参考:https://blog.csdn.net/u014022631/article/details/80514060 --network bridge #指定桥接网卡 model #网卡模式,这里也是使用性能更好的virtio --graphics #图形参数 磁盘镜像文件以qcow2、img、raw等格式后缀 磁盘镜像文件格式: 虚拟机磁盘文件有raw、qcow2格式和qed(这种已经不用了)。qcow2格式是kvm支持的标准格式,raw格式为虚拟磁盘文件通用格式。raw格式性能最好,速度最快,其缺点是不支持一些新的功能,如镜像,Zlib磁盘压缩、AES加密、快照等,另外raw格式文件比qcow2格式文件大很多,将近15倍吧。而qcow2格式是支持快照模式,做快照要把它转换成qcow2格式。 如果不想安装VNC Viewer,只需要将 --noautoconsole 去掉就可以直接自动弹出virt viewer界面安装。 #其他相关 查看物理CPU的个数(这台机器有几个cpu) cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 查看每个物理CPU的核数(查看每个cpu的核心数量) cat /proc/cpuinfo| grep "cpu cores"| uniq 查看逻辑CPU的个数 cat /proc/cpuinfo| grep "processor"| wc -l 参考文章:https://blog.csdn.net/qq_34777982/article/details/124559462 |

VNC模式安装完毕后关闭VNC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
kvm的vnc服务关闭 查看vnc端口:virsh vncdisplay demo 1、关闭虚拟机 virsh shutdown privi-server 2、virsh edit privi-server找到下面内容进行删除 <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> 3、启动虚拟机后vnc连接失效 virsh start privi-server VNC端口更改:https://zhuanlan.zhihu.com/p/473680439 |
1 |
-------------------------------------分割线--------------------------------------- |
1 2 3 |
如果执行上述命令出现qemu-kvm: could not open 'xx/CentOS-7-x86_64-DVD-1810.iso': Permission denied异常退出时,可通过修改/etc/libvirt/qemu.conf文件将user = "root",group = "root"前面的注释去掉解决 如无问题,安装程序将出现如下配置界面 |

1 2 3 4 5 6 7 |
可通过输入选项对应的数字来选择不同的配置,依次操作如下步骤完成时区设置: 输入2,回车,选择时区设置; 输入1,回车,选择“Set timezone”; 输入2,回车,选择“Asia”;回车, 输入65,回车,选择“Shanghai” 设置好时间后接着往下安装 |
设置安装源
1 2 3 4 5 6 7 |
输入3,回车 输入3,回车 输入1 输入安装源地址(这两个地址看自己情况,我这边用的第二个有效) http://mirrors.aliyun.com/centos/7/os/x86_64/ http://mirror.i3d.net/pub/centos/7/os/x86_64/ 输入c,回车,完成安装源设置 |

然后选择安装 软件 设置
1 2 3 |
输入1选择最小安装 输入c回车完成软件配置,直到回到主菜单 |

然后进行磁盘设置(1),

1 2 3 4 5 |
依次操作如下: 输入5,回车,进入安装设置; 输入c,回车,选择默认的磁盘进行安装; 输入c,回车,使用默认的“2) Use All Space”;输入1,回车,选择“1) Standard Partition”进行标准分区 |

磁盘设置(2) 手动分配

设置网络ip
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 |
输入1回车(选择设置主机名:Set host name),然后输入根据提示新的host name, 例如k8s-master-01 输入2回车(选择了Configure device eth0)设置ip等相关参数类似ifcfg-ens33网卡设置: Device configuration 1) IPv4 address or "dhcp" for DHCP dhcp 2) IPv4 netmask 3) IPv4 gateway 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to turn off auto 5) IPv6 default gateway 6) Nameservers (comma separated) 7) [ ] Connect automatically after reboot 8) [ ] Apply configuration in installer 输入1回车(选择了IPv4 address or "dhcp" for DHCP),然后根据提示输入IPv4 ip地址或 dhcp(dhcp模式就输入dhcp回车即可) 输入2回车(设置子网掩码) 输入3回车(设置网关) 输入6回车(设置DNS,114.114.114.114,8.8.8.8) 输入7回车(选择了Connect automatically after reboot) 输入8回车(选择了Apply configuration in installer) 输入c回车完成网络配置,继续输入c回车直到回到主菜单 |


最后进入root密码设置
1 2 3 4 |
操作如下: 输入8,回车,进入root密码设置; 输入密码,回车; 输入确认密码,回车 |

1 |
完成上述设置后,输入b开始进行安装 |

等待一段时间后,安装进行完成后,输入账号密码登录

查看我们先前开头配置的网络配置情况
1 |
vi /etc/sysconfig/network-scripts/ifcfg-eth0 |

1 2 |
修改 BOOTPROTO="static" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[root@k8s-master-01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="eth0" UUID="652b70bb-bb94-4e18-915a-a06fdaacfb3a" DEVICE="eth0" ONBOOT="yes" IPADDR="192.168.188.202" PREFIX="24" GATEWAY="192.168.188.1" DNS1="114.114.114.114" DNS2="233.6.6.6" DNS3="233.5.5.5" DNS4="8.8.8.8" |
保存,并重启网卡
1 |
service network restart |
这时候我们再通过brctl show来查看网桥挂载情况,br0下面已经多了一个vnet0虚拟网卡了。

- 本文固定链接: https://www.yoyoask.com/?p=4927
- 转载请注明: shooter 于 SHOOTER 发表