PVE使用cloud-init快速启动虚拟机

这里写目录标题

  • 关于cloud-init
  • 云镜像(cloud image)下载
  • 创建虚拟机模板,可反复使用
    • 超融合中硬盘虚拟化的三种方式
    • Debian
    • Ubuntu
    • CentOS7
  • 使用模板
    • 图形化方式
    • 命令行方式

关于cloud-init

传统ISO镜像装机时,需要一步一步规定虚拟机,比如系统盘安装在哪个磁盘里,ip是多少,root密码是多少,然后执行安装。安装时会下载许多系统包,整个过程耗时10分钟-30分钟,非常的慢。
大家在使用公有云的时候就很爽,可以在创建云服务器的时候,规定root密码、内网IP地址、DNS服务器等信息。第一次创建虚拟机到启动成功只要2分钟。这种开箱即用的爽感其实是cloud-init的功劳。
其实各种linux系统发行版除了有传统ISO镜像外,还有云镜像。云镜像一般是qcow文件或者raw文件。在启动之初如果虚拟机有cloud-init硬件并规定好信息后,虚拟机能在几秒-1分钟内启动好linux系统,无需一步一步手动设置。而且更改配置比较方便。而且云镜像支持resize,当虚拟机正在运行的时候增大系统盘(pve无法缩小系统盘)。

云镜像(cloud image)下载

Debian10:
https://cloud.debian.org/images/cloud/OpenStack/current-10/
目前可以选择 debian-10-openstack-amd64.qcow2

Ubuntu server22:
http://cloud-images.ubuntu.com/releases/22.04/release/
目前可以选择 ubuntu-22.04-server-cloudimg-amd64.img

CentOS 7:
http://cloud.centos.org/centos/7/images/
目前可以选择 CentOS-7-x86_64-GenericCloud-2009.qcow2

CentOS 9-steam
https://cloud.centos.org/centos/9-stream/x86_64/images/
选择:CentOS-Stream-GenericCloud-9-20221206.0.x86_64.qcow2

cloud-init支持的最好的是Ubuntu Server。

创建虚拟机模板,可反复使用

超融合中硬盘虚拟化的三种方式

包括PVE、ovirt、Harvester在内的众多超融合方案中,对虚拟机硬盘卷volume的虚拟化方式无非是3种:

  1. ide方式:这是一种全虚拟化的方式,硬盘和系统之间通过虚拟总线方式交互,这样性能很差,而且不稳定。
  2. virtio方式:这是半虚拟化的方式,硬盘的性能与宿主机内核有关,理论上一个虚拟机可以挂载64个virtio硬盘,实际上最多14个,超过14个后虚拟机将无法启动。
  3. scsi方式: 这是硬盘虚拟化的最优方式,同样采用半虚拟化。scsi的出现就是为了解决virtio硬盘挂载有上限的问题。scsi类的硬盘没有上限,性能好。

Debian

任意一台物理机执行一下命令,创建模板机

# 创建虚拟机
qm create 1001 --name debian10-cloudimage-template --memory 2048 --net0 virtio,bridge=vmbr0

# 导入云镜像
qm importdisk 1001 debian-10-openstack-amd64.qcow2 local-lvm
# 我使用RBD和Ceph FS,则命令如下
qm importdisk 1001 /mnt/pve/system_images/template/cloud-image/debian-10-openstack-amd64.qcow2 system_volumes

# 设置硬盘总线为virtio
qm set 1001 --virtio0 local-lvm:vm-1001-disk-0
# 我的RBD
qm set 1001 --virtio0 system_volumes:vm-1001-disk-0

# 修改虚拟机的引导顺序
qm set 1001 --boot c --bootdisk virtio0

# 虚拟机添加cloud-init硬件设备
qm set 1001 --ide2 local-lvm:cloudinit
# 我的RBD
qm set 1001 --ide2 system_volumes:cloudinit

# 设置串口显卡,否则你的虚拟机启动不了
qm set 1001 --serial0 socket --vga serial0

# 将虚拟机设置成模板(这个虚拟机只能被克隆,无法运行)
qm template 1001

Ubuntu

# 创建虚拟机
qm create 1002 --name ubuntu-server22.04-cloudimage-template --memory 2048 --net0 virtio,bridge=vmbr0

# 导入云镜像
qm importdisk 1002 ubuntu-22.04-server-cloudimg-amd64.img  local-lvm

# 设置系统盘总线scsi的话,在cloud-init类的image中无法正常启动,ide性能过低,所以只能用virtio
# 查看命令支持哪些scsi设备,使用命令qm help set,然后找--scsihw。
# --scsi0创建的系统盘无法启动,别用。
qm set 1002 --scsi0 local-lvm:vm-1002-disk-0 --scsihw lsi  # 别用
qm set 1002 --virtio0 system_volumes:vm-1002-disk-0  # 用virtio0!

# 创建cloud-init设备
qm set 1002 --ide2 local-lvm:cloudinit

# 设置引导顺序
qm set 1002 --boot c --bootdisk virtio0

# 设置屏幕
qm set 1002 --serial0 socket --vga serial0

# 虚拟机变成模板
qm template 1002

scsi类磁盘的cloud image无法启动!如下图。所以不要创建scsi0 !!!
PVE使用cloud-init快速启动虚拟机_第1张图片

CentOS7

# 创建虚拟机
qm create 1003 --memory 2048 --name CentOS7-cloudimage-template --net0 virtio,bridge=vmbr0
 
# 导入下载的镜像到local-lvm 存储空间
qm importdisk 1003 CentOS-7-x86_64-GenericCloud-2009.qcow2 local-lvm
 
# 将导入的磁盘以ide方式挂载到虚拟机上面,ide全虚拟化的性能差,你也可以选择上面的virtio
qm set 1003 --ide0 local-lvm:vm-1003-disk-0
 
# 添加 Cloud-Init 硬件
qm set 1003 --ide2 local-lvm:cloudinit
 
# 设置屏幕
qm set 1003 --serial0 socket --vga serial0
 
# 设置引导
qm set 1003 --boot c --bootdisk ide0
 
# 虚拟机变成模板
qm template 1003

使用模板

图形化方式

  1. 根据模板克隆一个虚拟机出来。克隆出来的新VM的mac地址不同于模板的mac地址,所以放心使用。
    PVE使用cloud-init快速启动虚拟机_第2张图片

PVE使用cloud-init快速启动虚拟机_第3张图片

  1. 修改新虚拟机的CPU、内存、系统盘大小
    PVE使用cloud-init快速启动虚拟机_第4张图片

PVE使用cloud-init快速启动虚拟机_第5张图片
PVE使用cloud-init快速启动虚拟机_第6张图片
PVE使用cloud-init快速启动虚拟机_第7张图片
从2GB增加到50GB
PVE使用cloud-init快速启动虚拟机_第8张图片

  1. 修改cloud init
    PVE使用cloud-init快速启动虚拟机_第9张图片

  2. 启动
    PVE使用cloud-init快速启动虚拟机_第10张图片
    启动后查看配置是否cloudinit的设置是否在linux中生效。

命令行方式

# 克隆机器
# 命令格式是 qm clone 模板id 新vm的id --name 新vm的名称
qm clone 1001 103 --name k8s-master-01

# 设置cpu的通道数socket和核心数core
# 下方命令设置2通道4核心,占用物理cpu 8个线程。模拟物理环境中的2核每核心有4个线程。
# 虚拟CPU中的核心=物理CPU的线程,虚拟CPU的通道=物理CPU的核心,虚拟CPU的个数=物理cpu的路数(几颗cpu)
# 物理CPU占用量=虚拟个数*虚拟通道数*虚拟核心数,概念有点绕,所以大家包涵一点,我也没办法。
qm set 103 --sockets 2 --cores 4 

# 设置内存
# PVE要求内存单位是MB,内存数为整数且是16的倍数,默认512
qm set 103 --memory 16384

# 加大系统盘,下方命令中的磁盘接口按照你实际设置来。
qm disk resize 103 virtio0/scsi0/ide0 +48G

# 设置cloud-init
qm set 103 --nameserver 192.168.0.1 \
           --ipconfig0 ip=192.168.1.13/23,gw=192.168.0.1 \
           --ciuser root \
           --cipassword 1234567890
           
# 由于模板机和新建机都在一个物理机上,所以需要迁移到其他服务器上,填上目标物理机的名字。
qm migrate 103 server003

# 启动VM
qm start 103

你可能感兴趣的:(linux,debian,服务器,PVE,Cloud-init)