kvm 创建虚拟机
kvm kvm 创建虚拟机
背景
公司的测试k8s集群需要扩容,原本两台物理机,磁盘读写io负载很高,io只要涨上来,问题就都来了。
所以为了分摊磁盘读写的压力,决定在多个宿主机上通过kvm创建多个虚拟机作为node节点分摊数据的读写。
镜像下载
我这里根据公司要求,下载的是centos7.9,所以下面以centos7.9为例
# 也可以直接下载
mkdir -p /data/kvm/iso
cd /data/kvm/iso
wget https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso
创建虚拟机
# 登陆宿主机,使用virt-install 创建虚拟机
virt-install -n test-kubernetes-node01-8.74 --vcpus 8 -r 32768 --disk /data/kvm/image/test-kubernetes-node01-sys.qcow2,size=50 --disk /data/kvm/image/test-kubernetes-node01-data.qcow2,size=500 --location /data/kvm/iso/CentOS-7-x86_64-Minimal-2207-02.iso --nographics --network bridge=br80 -os-type linux --os-variant rhel7 --console pty,target_type=serial --extra-args 'console=ttyS0,115200n8 serial'
# 命令详解
-n test-kubernetes-node01-8.74 # 指定宿主机名称为test-kubernetes-node01-8.74
--vcpus 8 # 指定虚拟机8核
-r 32768 # 指定虚拟机32G内存 32*1024
--disk /data/kvm/image/test-kubernetes-node01-sys.qcow2,size=50 # 为虚拟机初始化一块系统盘,50G,当然,他也可以通过 qemu-img 提前创建,执行命令这里改成 --disk /data/kvm/image/test-kubernetes-node01-sys.qcow2
--disk /data/kvm/image/test-kubernetes-node01-data.qcow2,size=500 # 为虚拟机初始化一块数据盘,500G,
-location /data/kvm/iso/CentOS-7-x86_64-Minimal-2207-02.iso # 指定刚才下载的镜像地址
--nographics # 不调用图形化界面
--network bridge=br80 # 指定网桥,kvm有网桥和nat两种网络模式,网桥可以通过 brctl show 命令查看
-os-type linux # 操作系统类型
--os-variant rhel7 # 操作系统版本
--console pty,target_type=serial # console控制通道
--extra-args 'console=ttyS0,115200n8 serial' # 文本输出
执行后会进入设置选项:
带 [!] 的是必须要设置的, [x] 是可选地 []也是可选的
各选项含义如下:
1)语言设置 2)时区设置 3)安装源 4)软件包选择
5)系统分区 6)Kdump功能 7)网络配置 8)密码设置
9)创建用户
按“q”退出,按“b”开始安装。必须把带“!”号的都设置好才能开始安装
- 时区 依次输入2->1->2->回车->65
- 分盘 5>1>c>1>c # 根据实际情况查看
- 密码 8->密码->密码->yes
最后按b安装
修改虚拟机网卡
virsh console xxxx
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static #更改:此处更改为静态IP
ONBOOT=yes #更改:此处更改成开机自启动
IPADDR=192.168.8.74 #添加:需要和你绑定的网桥在同一网段,我宿主机的网桥是192.168.8.0/24网段,宿主机的ip是 192.168.122.167
NETMASK=255.255.255.0 #添加:掩码
GATEWAY=192.168.8.1 #添加:网桥就是网关?我认为是这样,毕竟br80绑定了物理网卡 192.168.8.0/24
DNS1=8.8.8.8 #添加dns
# 修改selinuxconf
vi /etc/selinux/config
SELINUX=disabled
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
删除虚拟机
virsh list --all # 查看所有虚拟机
virsh console test-kubernetes-node01-8.74 # 进入虚拟机
ctrl + D # 退出后按 shieft + ]
virsh shutdown test-kubernetes-node01-8.74 # 关机
virsh destroy test-kubernetes-node01-8.74 # 强制关机
virsh undefine test-kubernetes-node01-8.74 # 删除虚拟机
rm -f /data/kvm/image/test-kubernetes-node01-sys.qcow2 /data/kvm/image/test-kubernetes-node01-data.qcow2 # 删除我们初始化的盘,如果我们新建的话这里一定删除,因为不删除新建虚拟机读的还是旧的盘
virsh autostart xxx #设置宿主机开机时该虚拟机也开机
virsh autostart --disable xxx #解除开机启动
virsh reboot *** # 重启虚拟机