Linuxword Global
当前位置: 建站相关 > PVE使用Cloud Image做模板

前言

Cloud Image专用于适配云计算的一种镜像格式(模板),面向私有云和公有云;它与ISO镜像的区别是,ISO镜像是可引导的带安装器的一种镜像格式,通常情况,走光驱通道启动安装器,把系统安装到硬盘上;而这个过程需要填写一些系统需要的信息,如计算机名称、用户名信息、网络信息和机器配置之类的;虽然也可以通过PXE的方式进行全自动引导安装,但与云镜像的方式还是有很大不同;至少云镜像的方式更快,从本地直接拉起镜像;

云镜像是不带安装器的,它本身就是个虚拟磁盘文件格式,换句话说就是,它就是一个装好的系统,加上Cloud-Init程序进行初始化。

不管是PXE还是云镜像的方式,都有一个共同的特点,就是一个全新的系统;这里全新的系统更多指的是系统内各种ID会自动生成,这一点对于需要搭建集群的环境来说,至关重要;并通过Cloud-Init程序,可以每次定义不同的用户名、密码、IP和SSH密钥。在克隆方面VMware Workstation做的不错。

值得高兴的是,PVE的非订阅版本提供了这个功能,配合操作系统厂商提供的云镜像文件,制作镜像之后,我们可以快速的克隆出各种机型,实现快速和个性化交付。

版本信息

  • PVE 7.0-13
  • CentOS-7-x86_64-GenericCloud-2009.qcow2
  • ubuntu-20.04-server-cloudimg-amd64.img(20211004)

update

2021年10月14日

不知道什么原因,用Ubuntu cloud image做的模板,在克隆后获取IP的时候,克隆出来的机器竟然只会获取一个IP,用centos就不会;后来用ubuntu的ISO镜像安装后(20.04默认已经安装cloud-init)手动添加外部的Cloud-Init,做模板,这个问题解决了;

即便是使用上述方法也不行;只要是克隆的,就会出现问题;在pfsense和openwrt做二级路由的时候;

这种问题只会出现在Ubuntu上,Centos就不会。

image-26
pfsense

在openwrt上会出现抢注的情况,u20-1和u20-2谁重启网络服务,这个IP就注册给谁

image-27

主流的操作系统厂商都提供了多种CPU架构和多种虚拟化平台的云镜像格式;

Ubuntu Cloud Images (RELEASED)、Cloud CentOS

PVE是基于Debian的Linux,使用了QEMU/KVM虚拟化技术;CentOS默认提供qcow2格式,而Ubuntu则提供的KVM是img格式。

创建虚拟机模板

基本流程:

  1. 创建一个虚拟机
  2. 删除硬盘
  3. 转换云镜像为磁盘并挂载
  4. 添加Cloud-Init并配置
  5. 启动操作系统并配置
  6. 关机转换为模板。

创建一个虚拟机

这里的名称,会自动作为本次操作系统的计算机名称。

image-12
设置虚拟机名称
image-13
不使用任何介质
image-14
勾选QEMU代理

这里默认即可,一会是要删除这个硬盘的;

image-15
保持默认

一路走下去,到完成。

先分离硬盘,在删除

image-17
分离硬盘
image-18
删除硬盘

下载并转换镜像

下载镜像,通过SSH登录到母机上;进入镜像的存放目录或者使用Web页面的下载镜像功能也可以;但是之后的转换云镜像为磁盘的操作需要命令行来完成。

如果你没有添加过额外的存储,那么默认路径在 /var/lib/vz/template/iso 目录下;以Ubuntu为例;使用 qm 命令将下载的云镜像文件转为一个磁盘文件;我这里添加了 /raid0 目录存储虚拟机和镜像文件;

bug:使用ubuntu-20.04-server-cloudimg-amd64-disk-kvm.img这个镜像或开机会提示attempting initrdless boot;所以得下载不带KVM关键字的镜像;至少这个日期版本(20211004)是有问题的。

# 下载镜像
wget https://cloud-images.ubuntu.com/releases/focal/release-20211004/ubuntu-20.04-server-cloudimg-amd64.img

# 转换云镜像为虚拟磁盘
qm importdisk 104 ubuntu-20.04-server-cloudimg-amd64.img raid0 --format=qcow2
# 104 为虚拟机的ID
# raid0 为存储的名称,如果没有额外存储,则默认是local
# --format=qcow2 为转换后的格式

# 看到Successfully,转换完成
Successfully imported disk as 'unused0:raid0:104/vm-104-disk-0.qcow2'

CentOS的Cloud Image提供了qcow2格式,则无需使用--format参数

回到虚拟机“硬件”页面;多了一块“未使用的磁盘0”;双击后,点击添加。

image-19
添加新硬盘

这里初始磁盘容量比较小,可以点击磁盘“调整磁盘大小”;显示的是MB,增量的是GB。

image-24
调整磁盘大小

在点击“添加”Cloud-Init设备。

image-20
添加Cloud-Init设备

选择存储和SCSI ID为1,创建

image-21
添加Cloud-Init设备

由于刚刚删除了磁盘,所以启动选项里为空,这时候需要勾选一下刚刚添加的新磁盘为启动盘。勾选“scsi0”并拖拽到第一个,或者取消其他的,只保留scsi0也可以。

光驱默认是IDE接口,可以把它删除了,重新添加为SCSI 2;选项为“不使用任何介质”。

image-25

这个时候就可以设置Cloud-Init选项了;由于我们使用的是Ubuntu,则这里不能设置用户为“root”,因为这个账户Ubuntu默认禁用;如果有需要,可以在之后的启动后开启root,再生成模板。

image-23

在继续填写SSH公钥(可以加载文件)和IP配置,这个时候网卡的Mac地址已经生成,IP配置的选项为DHCP和Static。这些就绪之后,就可以启动这个系统了。

配置模板系统

  1. 设置时区
sudo timedatectl set-timezone Asia/Shanghai

2. 设置APT仓库源

sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

3. 安装软件或更新系统

# 更新源和安装常用软件
sudo apt update && sudo apt install vim bash-completion -y

# 安装qemu代理
sudo apt install qemu-guest-agent -y
sudo systemctl enable --now qemu-guest-agent

# 更新系统
sudo apt upgrade

4. 修改SSH配置;(有必要)

# 开启root登录(如果需要的话;这里开启了之后Cloud-Init用户就可以设置root)
PermitRootLogin yes

# 开启密钥登录
PubkeyAuthentication yes
# 密钥路径
AuthorizedKeysFile

# 开启密码登录(默认只允许密钥登录)
PasswordAuthentication yes

# 不允许空密码登录
PermitEmptyPasswords no

# 关闭连接的DNS解析
UseDNS no

5. 清理缓存

sudo apt autoclean all

6. 其他自定义配置

关机,转换为模板,就可以了。

后记

使用Cloud-Init的方式可以不用架设PXE服务器,也不用因为普通的克隆导致新系统的各种ID和源系统相同。对于经常需要做实验的环境来说,快速初始化一些全新的操作系统效率很高。另外,如果不是集群模式,又有多台PVE的话,只需要做好一个,使用PVE的虚拟机备份与恢复功能,传输到其他机器上,则更方便。

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2546 篇
  • 草稿数目: 20 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 10978 个
  • 注册用户: 139 人
  • 访问总量: 8,648,971 次
  • 最近更新: 2024年10月6日