使用 Proxmox VE 做本地服务器虚拟化

在使用 Proxmox VE (PVE)之前,办公室的服务器做虚拟化,使用的是方案是:Vagrant / libvirt kvm provider。

优点是全部配置文件化,一个命令可以跑起来全部节点,比如跑 7 vm 节点的 es 集群或者 k8s 集群。

缺点是不好管理,全得靠命令行,另外就是没有多用户权限支持,不利于分工合作。

为了便于多人合作和管理,开始使用 Proxmox VE,并给出一个不太自动化的操作最小集(节约学习成本)。

使用 qm 命令,通过 ssh 或者 pve web 界面的 shell 中操作,以下是必须的操作:

  • 下载 ubuntu server 支持 cloud-int 的镜像
  • 创建虚拟机模板
  • 克隆虚拟机实例
  • 修改虚拟机实例磁盘大小
  • 启动虚拟机实例
  • 停止虚拟机实例
  • 删除虚拟机实例

代码如下:

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
# 下载镜像
wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img

template_id=500
vm_number=1

# 创建模板
qm create $template_id --name temp --memory 2048 --net0 virtio,bridge=vmbr0
qm importdisk $template_id focal-server-cloudimg-amd64.img local-lvm
qm set $template_id --virtio0 local-lvm:vm-$template_id-disk-0
qm set $template_id --boot c --bootdisk virtio0
qm set $template_id --agent 1
qm set $template_id --ide2 local-lvm:cloudinit
qm template $template_id

# 克隆虚拟机
qm clone $template_id 20$vm_number --name p$vm_number

# 修改磁盘大小
qm resize 20$vm_number virtio0 20G

# 启动虚拟机
qm start 20$vm_number

# 停止虚拟机
qm stop 20$vm_number

# 删除虚拟机
qm destroy 20$vm_number

代码见:https://gist.github.com/MarshalW/bc186c041c962655b6c0c20881f74a55