Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PVE 虚拟化下 CentOS 7 虚拟机模板制作及自动开通完全指南

PVE 虚拟化下 CentOS 7 虚拟机模板制作及自动开通完全指南

原创
作者头像
运维有术
发布于 2023-11-28 08:42:06
发布于 2023-11-28 08:42:06
4.1K0
举报
文章被收录于专栏:运维有术运维有术

云原生运维实战第二季|PVE 虚拟化下 CentOS 7 虚拟机模板制作及自动开通完全指南

大家好,欢迎来到运维有术

欢迎来到云原生运维实战训练营系列课程第二季

前言

导图

pve-template-mindmap
pve-template-mindmap

知识量

  • 阅读时长:10 分
  • 行:340
  • 单词:3000+
  • 字符:8400+
  • 图片:18 张

知识点

  • 定级:入门级
  • PVE 控制台下虚拟机创建
  • CentOS 7 虚拟机模板的制作
  • Cloud-init 的安装配置
  • PVE 虚拟机转换成模板
  • PVE 命令行管理虚拟机和存储资源

实战服务器配置 (个人组装的 X99-D3 测试服务器,性价比较高,千元内学习测试首选)

  • 主板:科脑 X99(DDR3 款)
  • CPU: Intel(R) Xeon(R) CPU E5-2698B v3 @ 2.00GHz (单 CPU)
  • 内存:128G(DDR3 32G * 4)
  • 硬盘:1T nvme.m2(有条件建议配置 2 块,1 块 512G SSD 安装系统存放模板,1 块 >1T nvme 存放虚拟机)
pve-server-status
pve-server-status

实战环境涉及软件版本信息

  • PVE:8.0.4
  • 操作系统:CentOS 7.9 x64

1. 本文简介

在云原生运维实战课程中,我们将经常进行各种操作系统的安装和各种服务软件的安装配置。涉及的操作系统包括 CentOS、Ubuntu 和 OpenEuler,而服务软件则涵盖了小到 Nginx、MySQL 等,大到一套完整的 Kubernetes、KubeSphere、分布式存储 集群。

为了完成这些复杂的实战内容,首先需要有一台用于学习测试的裸服务器。在这台裸服务器上,我们需要安装虚拟化软件来部署虚拟机。在虚拟化软件的选择上,既可以选择商业化的 VMware vSphere,也可以选择开源的 Proxmox Virtual Environment。基于以上的原因,我在海鲜市场淘了一套二手洋垃圾服务器,然后安装了 Proxmox Virtual Environment,以下简称 PVE。这样,我就可以轻松地在 PVE 上创建和管理多个虚拟机,用于云原生运维的实战训练。

很多人觉得没必要搞一台自己的裸服务器,有需求时直接购买云服务商的云主机即可。事实确实如此?如果你只是偶尔做个小实验,资源使用需求不大,那完全没问题。但是,如果你是一个重度的技术爱好者、实验者,每天的学习实验时间超过 4 小时以上,实验虚拟机的资源需求大于 3 台,甚至更多,每台资源大于 4C 16G 。再加一个假设,持续 1-3 年甚至更久,拿出计算器计算一下云上成本,我觉得还是自己攒一台洋垃圾比较划算。

选择 PVE 作为裸服务器的虚拟化软件的主要原因如下:

  • vSphere 不识别非服务器主板上螃蟹网卡,还需要自己找驱动制作安装 ISO,麻烦没必要(也可以买个 PCIE 的服务器网卡插主板上)。
  • 在自动化开通和配置方面,PVE 相对更简单省事点,vSphere 需要更多的技术手段
  • 以前没玩过 PVE,想玩点新鲜的不一样的,技术的提升在于折腾(vSphere 太稳定了)

在裸服务器上安装 PVE 虚拟化软件后,由于我们在测试过程中需要经常开通新的虚拟机并在测试完成后立即销毁,为了提高效率,我们利用提前装好的虚拟机模板采用 PVE 命令行的方式实现虚拟机和存储资源的快速创建、配置、销毁。

本文将介绍如何安装制作启用 Cloud-init(主要用于自动化配置 IP、用户和密码) 的 CentOS 7.9 模板,并阐述实战如何利用 PVE 命令行实现虚拟机的创建、配置、销毁等操作。

2. 制作 CentOS 7 虚拟机模板

为了后续在 PVE 主机上实现自动化开通配置虚拟机,本虚拟机模板安装 Cloud-init。

2.1 通过页面创建虚拟机

通过 PVE 管理控制台,创建虚拟机。

  • 虚拟机-常规
pve-vm-create-1
pve-vm-create-1
  • 虚拟机-操作系统(选择 CentOS7 的安装 ISO)
pve-vm-create-2
pve-vm-create-2
  • 虚拟机-系统(建议勾选 Qemu 代理
pve-vm-create-3
pve-vm-create-3
  • 虚拟机-磁盘(大小 40 GB,格式选择默认的 QEMU 映像格式)
pve-vm-create-4
pve-vm-create-4
  • 虚拟机-CPU(类别建议选择 host )
pve-vm-create-5
pve-vm-create-5
  • 虚拟机-内存配置(作为模板,默认值即可)
pve-vm-create-6
pve-vm-create-6
  • 虚拟机-网络(选择默认的 VirtIO 模型)
pve-vm-create-7
pve-vm-create-7
  • 虚拟机-确认
pve-vm-create-8
pve-vm-create-8

2.2 修改虚拟机硬件配置

  • 虚拟机硬件配置中添加,cloud-init 配置。
pve-vm-cloudinit-1
pve-vm-cloudinit-1
  • 添加->CloudInit 设备
pve-vm-cloudinit-2
pve-vm-cloudinit-2
  • 选择存储和格式
pve-vm-cloudinit-3
pve-vm-cloudinit-3
  • 最终效果
pve-vm-cloudinit-4
pve-vm-cloudinit-4

2.3 安装操作系统并配置 Cloud-init

  • 安装操作系统

启动虚拟机并安装操作系统,安装过程略,根据需求正常安装配置即可。安装过程中需要正确配置网络,确保虚拟机能正常连接互联网,否则后面安装 Cloud-init 的任务无法完成。

  • 安装 Cloud-init
代码语言:shell
AI代码解释
复制
# 安装必须的包
yum install qemu-guest-agent cloud-init
install-cloud-init
install-cloud-init
  • 修改 Cloud-init 配置

修改默认的 cloud-init 配置,开启 PasswordAuthentication 认证,vi /etc/cloud/cloud.cfg

修改 ssh_pwauth 的值为 1,(默认为 0,Cloud-init 会自动修改 sshd 配置文件的 PasswordAuthentication 配置为 no,导致无法使用密码的方式登陆系统)

edit-cloud-cfg
edit-cloud-cfg

2.4 虚拟机转换成模板

参考下面的操作将虚拟机转换成模板。

  • 修改虚拟机网卡配置文件 ,vi /etc/sysconfig/network-scripts/ifcfg-eth0,仅保留以下字段。
代码语言:text
AI代码解释
复制
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
DEVICE=eth0
ONBOOT=yes
  • 清除历史命令并关机
代码语言:shell
AI代码解释
复制
# 注意 histroy 跟命令提示符 # 之间加一个空格
#  history -c && init 0
  • 虚拟机硬件中删除 CD/DVD 驱动器
remove-cdrom
remove-cdrom
  • 虚拟机转换成模板

在 PVE 管理控制台中,在虚拟机名称上点击「右键」,选择「转换成模板」。

image-20231128141114231
image-20231128141114231

3. PVE 自动创建虚拟机示例

注意: 利用命令创建和配置虚拟机需要 SSH 远程登录到 PVE 主机。

3.1 自动创建并配置虚拟机

  • 克隆虚拟机
代码语言:shell
AI代码解释
复制
# 格式:qm clone `模板id` `新虚拟机id` --name `新虚拟机的名称`
qm clone 103 203 --name ksp-master-1
  • 设置 CPU
代码语言:shell
AI代码解释
复制
# 设置cpu的通道数socket和核心数core
# 下方命令设置2通道2核心,占用物理cpu 4个线程。模拟物理环境中的2核每核心有2个线程。
# 虚拟CPU中的核心=物理CPU的线程,虚拟CPU的通道=物理CPU的核心,虚拟CPU的个数=物理cpu的路数(几颗cpu)
# 物理CPU占用量=虚拟个数*虚拟通道数*虚拟核心数,
qm set 203 --sockets 2 --cores 2
  • 设置内存
代码语言:shell
AI代码解释
复制
# 设置内存
# PVE要求内存单位是MB,内存数为整数且是16的倍数,默认512
qm set 203 --memory 16384
  • 添加数据盘
代码语言:shell
AI代码解释
复制
# 虚拟机名称 203,槽位 scsi1,存储名称:容量大小(local:100)
qm set 203 --scsi1 iothread=1,local:100
  • 添加网卡
代码语言:shell
AI代码解释
复制
# 虚拟机名称 203,网络设备名称 net1,桥接的网桥名称 vmbr1
qm set 203 --net1 model=virtio,bridge=vmbr1
  • 设置 Cloud-Init
代码语言:shell
AI代码解释
复制
# 虚拟机名称 203,dns, 网卡2的IP和网关(注意第一块网卡是 ipconfig0),系统用户名 root,系统用户密码 password
qm set 203 --nameserver 114.114.114.114 \
           --ipconfig1 ip=192.168.9.91/24,gw=192.168.9.254 \
           --ciuser root \
           --cipassword password
  • 启动虚拟机
代码语言:shell
AI代码解释
复制
qm start 203

3.2 批量自动化创建脚本

批量创建需求如下:

  • 利用虚拟机模板 103,批量创建 3 个虚拟机
  • 新建的虚拟机 ID 为 20x,虚拟机名称为 demo-vmx
  • 指定存储名称为 local
  • 每个虚拟机 2 插槽 2 核心即 4 线程,内存 16G
  • 每个虚拟机添加一块 100G 的数据盘
  • 每个虚拟机添加一个内网网卡,即网络设备 (net1),网卡 IP 为 192.168.9.9x,网关为 192.168.9.254
  • 设置系统 root 用户的密码为 password

使用下面的 Shell 脚本批量创建虚拟机:

  • 创建虚拟机
代码语言:shell
AI代码解释
复制
for id in $(seq 1 1 3)
do
qm clone 103 20${id} --name demo-vm${id} -full true -storage local
qm set 20${id} --sockets 2 --cores 2 --memory 16384
qm set 20${id} --net1 model=virtio,bridge=vmbr1
qm set 20${id} --scsi1 iothread=1,local:100
qm set 20${id} --nameserver 114.114.114.114 --ipconfig1 ip=192.168.9.9${id}/24,gw=192.168.9.254 --ciuser root --cipassword password
qm start 20${id}
done

说明: 命令执行结果如下图所示

pve-create-vm
pve-create-vm
  • 销毁虚拟机
代码语言:shell
AI代码解释
复制
# 停止虚拟机
for id in $(seq 1 1 3);do qm stop 20${id};done

# 销毁虚拟机及未使用的磁盘
for id in $(seq 1 1 3);do qm destroy 20${id} -purge -destroy-unreferenced-disks;done

4. 总结

本文主要实战演示了在 PVE 虚拟化上创建 CentOS 7.9 虚拟机模板的详细过程。同时,介绍了如何利用 PVE 命令行管理虚拟机和存储资源。

概括总结全文主要涉及以下内容:

  • PVE 虚拟机创建
  • CentOS 7.9 虚拟机模板制作
  • Cloud-init 安装配置
  • PVE 虚拟机转换成模板
  • PVE 命令行创建和配置虚拟机

本文制作的虚拟机模板虽然是基于 CentOS 7.9 ,但是对于 Ubuntu、openEuler 等操作系统同样具有借鉴意义,只是网卡配置和 cloud-init 等安装包的名称和安装命令不一样。

本文的核心价值在于基于 PVE 自动化创建和配置虚拟机,可以极大的提高运维人员的学习和工作效率。

本文介绍的内容可直接用于个人测试的 PVE 环境,同样适用于使用 PVE 作为研发测试环境的团队。

结束语

如果你喜欢本文,请持续关注我,并将本文分享给你的小伙伴!

云原生运维实战系列文档,是 知识星球 运维有术 推出的云原生运维实战训练营系列课程的实战文档。

该系列文档从纯实战角度出发,无废话、纯实战快速带你玩转云原生运维。

本系列文档内容涵盖 (但不限于) 以下技术领域:

  • OpenStack、Proxmox Virtual Environment
  • KubeSphere、Kubernetes
  • Ansible、自动化运维、DevOps
  • 大数据、AIGC
  • 云原生、CNCF 技术栈

获取更多的云原生运维实战技能,请持续关注我,也可以直接加入我们。

Get 技术支持

  • 知识星球: 运维有术(知识付费

Get 文档 / 代码

  • 微信公众号: 运维有术(创作不易,感谢关注与支持)

Get 视频

版权声明

  • 所有内容均属于原创,整理不易,感谢收藏、阅读,未经授权不得转载

About Me

  • 昵称:OpsMan
  • 职业:自由职业者
  • 服务的领域:云计算 、 云原生技术运维,自动化运维,大数据运维
  • 技能标签:OpenStack、Kubernetes、KubeSphere、Ansible、Python、Go、DevOps、CNCF、大数据、云原生、AIGC

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
玩转 AIGC:打造本地 AI 大模型地基,PVE 制作 Ubuntu 24.04 LTS 模板
今天分享的内容是 玩转 AIGC「2024」 系列文档中的 打造本地 AI 大模型地基,PVE 制作 Ubuntu 24.04 LTS 模板。
运维有术
2024/05/06
1.3K0
玩转 AIGC:打造本地 AI 大模型地基,PVE 制作 Ubuntu 24.04 LTS 模板
PVE Cloud-INIT 模板配置
Cloud-init是开源的云初始化程序,能够对新创建弹性云服务器中指定的自定义信息(主机名、密钥和用户数据等)进行初始化配置。通过Cloud-init进行弹性云服务器的初始化配置,将对您使用弹性云服务器、镜像服务和弹性伸缩产生影响。简单地讲,cloud-init是一个Linux虚拟机的初始化工具,被广泛应用在AWS和OpenStack等云平台中,用于在新建的虚拟机中进行时间设置、密码设置、扩展分区、安装软件包等初始化设置。
小陈运维
2023/04/06
1.5K0
[PVE][Linux]PVE创建openEuler虚拟机模板
上回书说到安装openEuler那叫一个费劲,既然Proxmox VE是一个云计算虚拟化平台,那么创建一个虚拟机模板是必须的。
用户9314062
2022/05/20
3.3K0
[PVE][Linux]PVE创建openEuler虚拟机模板
proxmox通过更多的方式创建虚拟机
作为一名资深运维工程师,我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机:
对你无可奈何
2025/02/05
1940
Cloud-init 概述及 PVE 下创建步骤说明
Cloud-init 是一个程序,它在启动时在客户机上运行,是用于 跨平台云实例初始化 的行业标准多分发方法。它支持所有主要的 公共云提供商、私有云基础设施的供应系统和裸机安装。
宋天伦
2023/10/18
2.5K0
如何用PVE虚拟化在x86环境下模拟一个Arm开发环境
这里解释下,这里介绍两类主要开发场景:一类是应用程序,另外一类是专用的系统(当选像华为单纯做芯片的这种,这个不属于这里说的这两类的开发,这个今天先不聊,如果大家感兴趣,可以找时间聊下做芯片到底做啥)。
用户1160092
2024/11/18
1.8K0
如何用PVE虚拟化在x86环境下模拟一个Arm开发环境
VMWARE 虚拟机导入腾讯云-CentOS 篇
centos6.7 版本通过 yum 源安装的 cloud-init 版本低,虽然可以正常导入,但是生成的虚拟机无法获取网络配置。因此需要用腾讯云提供的绿色版进行安装。
本地专用集群CDC
2022/10/10
4.9K0
KVM 虚拟化
  基于内核的虚拟机 Kernel-based Virtual Machine(KVM)是一种内建于 Linux® 中的开源虚拟化技术。具体而言,KVM 可帮助您将 Linux 转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。
zhonger
2022/10/28
1.2K0
proxmox创建虚拟机
proxmox服务器已经搭建完成从Proxmox VE开始:安装与配置指南,下面准备搭建一下自己的实验环境。创建虚拟机是第一步,因此本篇博客将详细介绍如何在 Proxmox 上创建虚拟机,包括通过控制台高效地创建虚拟机和使用模板创建更多虚拟机。
对你无可奈何
2025/02/04
1700
服务器物理机使用ESXI虚拟化并划分虚拟机
最近因为增加了一台物理机,所以需要对物理机进行虚拟化后划分虚拟机。下面主要来介绍物理机划分虚拟机的操作步骤。
十里桃花舞丶
2019/02/20
6.4K0
服务器物理机使用ESXI虚拟化并划分虚拟机
kvm-初始化cloud-init(二)
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2024/11/08
1740
kvm-初始化cloud-init(二)
使用Ansible构建虚拟机模板
编者按:本文节选自节选自《基于Linux的企业自动化》第五章。“第5章,使用Ansible构建用于部署的虚拟机模板,通过构建虚拟机模板来探索部署Linux的最佳实践,虚拟机模板将以实际操作的方式大规模部署在虚拟机管理程序上。”
Linux阅码场
2023/08/21
3330
使用Ansible构建虚拟机模板
OpenEuler 部署 KVM 虚拟化制作openstack镜像
内核模块导出了一个名为/dev/kvm的设备,该设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间
Kevin song
2023/12/04
1.7K0
OpenEuler 部署 KVM 虚拟化制作openstack镜像
KVM--cloud-init 初始化虚拟机(十三)
cloud-init是云平台为Linux操作系统的虚拟机做系统初始化配置的开源服务软件。阿里云、AWS、Azure和OpenStack等主流云平台均支持cloud-init。cloud-init系统启动阶段完成系统初始化配置。包括但不限于下面的定制化工作
Kevin song
2022/11/19
2.2K0
在使用 WLAN 联网的树莓派上安装 Proxmox VE 并创建虚拟机
  去年的这个时候收了一台树莓派 4B,到手之后宝塔建站一把梭之后就放在那里吃灰(没办法,技术太菜玩不了别的)。最近迷上了 PVE,想想手头也没有什么可以实践的物理设备,百般寻找之后便把目光锁定在了吃灰中的树莓派。   Proxmox 论坛的 https://forum.proxmox.com/threads/how-to-run-pve-7-on-a-raspberry-pi.95658/ 帖子讲的是在有线网络接入 (eth0) 时的安装过程,目前我手里没有网线,所以只能修修改改踩踩坑探索一下 WLAN 接入网络 (wlan0) 时的安装和配置。
Nyarime
2021/12/14
8.5K0
在使用 WLAN 联网的树莓派上安装 Proxmox VE 并创建虚拟机
kvm-克隆(clone)虚拟机
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2024/11/01
1210
kvm-克隆(clone)虚拟机
玩转虚拟化 - Proxmox VE 安装及配置
闲来无事,就来研究一下各种关于虚拟化的知识。目前虚拟化大概可以分为三个种类:半虚拟化、硬件辅助的全虚拟化、OS容器级别的虚拟化。其中:
蒟蒻
2023/11/16
3.3K0
玩转虚拟化 - Proxmox VE 安装及配置
virtlet是什么?virtlet如何管理虚拟机?
随着Docker和Kubernetes生态圈的发展,云计算领域对容器的兴趣达到了狂热的程度。容器技术为应用程序提供了隔离的运行空间,每个容器内都包含一个独享的完整用户环境空间,容器内的变动不会影响其他容器的运行环境。因为容器之间共享同一个系统内核,当同一个库被多个容器使用时,内存的使用效率会得到提升。基于物理主机操作系统内核的,那就意味着对于不同内核或者操作系统需求的应用是不可能部署在一起的。
谐云
2021/08/18
9110
virtlet是什么?virtlet如何管理虚拟机?
虚拟化
我们常说的虚拟化可以分为两种类型: TYPE I 和 TYPE II。 我们常见的 VMWare Workstation、VirtualBox、Parallels Desktop、Hyper-V 等均属于二型虚拟化软件,他们需要运行于宿主操作系统。 而企业级虚拟化平台例如 VMWare vSphere、KVM、Hyper-V server 等则属于一型虚拟化,他们直接运行于裸金属服务器。
1ess
2021/10/29
2.2K0
虚拟机安装 Linux 最完整攻略
工作中如果你是Linux运维,或者程序员,一定经常需要一个Linux的环境来让你折腾。这个时候使用虚拟机对我们来说是一个不错的选择。
Coding十日谈
2020/08/13
1.2K0
虚拟机安装 Linux 最完整攻略
相关推荐
玩转 AIGC:打造本地 AI 大模型地基,PVE 制作 Ubuntu 24.04 LTS 模板
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档