大家好,欢迎来到运维有术
欢迎来到云原生运维实战训练营系列课程第二季
导图
知识量
知识点
实战环境涉及软件版本信息
在云原生运维实战课程中,我们将经常进行各种操作系统的安装和各种服务软件的安装配置。涉及的操作系统包括 CentOS、Ubuntu 和 OpenEuler,而服务软件则涵盖了小到 Nginx、MySQL 等,大到一套完整的 Kubernetes、KubeSphere、分布式存储 集群。
为了完成这些复杂的实战内容,首先需要有一台用于学习测试的裸服务器。在这台裸服务器上,我们需要安装虚拟化软件来部署虚拟机。在虚拟化软件的选择上,既可以选择商业化的 VMware vSphere,也可以选择开源的 Proxmox Virtual Environment。基于以上的原因,我在海鲜市场淘了一套二手洋垃圾服务器,然后安装了 Proxmox Virtual Environment,以下简称 PVE。这样,我就可以轻松地在 PVE 上创建和管理多个虚拟机,用于云原生运维的实战训练。
很多人觉得没必要搞一台自己的裸服务器,有需求时直接购买云服务商的云主机即可。事实确实如此?如果你只是偶尔做个小实验,资源使用需求不大,那完全没问题。但是,如果你是一个重度的技术爱好者、实验者,每天的学习实验时间超过 4 小时以上,实验虚拟机的资源需求大于 3 台,甚至更多,每台资源大于 4C 16G 。再加一个假设,持续 1-3 年甚至更久,拿出计算器计算一下云上成本,我觉得还是自己攒一台洋垃圾比较划算。
选择 PVE 作为裸服务器的虚拟化软件的主要原因如下:
在裸服务器上安装 PVE 虚拟化软件后,由于我们在测试过程中需要经常开通新的虚拟机并在测试完成后立即销毁,为了提高效率,我们利用提前装好的虚拟机模板采用 PVE 命令行的方式实现虚拟机和存储资源的快速创建、配置、销毁。
本文将介绍如何安装制作启用 Cloud-init(主要用于自动化配置 IP、用户和密码) 的 CentOS 7.9 模板,并阐述实战如何利用 PVE 命令行实现虚拟机的创建、配置、销毁等操作。
为了后续在 PVE 主机上实现自动化开通配置虚拟机,本虚拟机模板安装 Cloud-init。
通过 PVE 管理控制台,创建虚拟机。
启动虚拟机并安装操作系统,安装过程略,根据需求正常安装配置即可。安装过程中需要正确配置网络,确保虚拟机能正常连接互联网,否则后面安装 Cloud-init 的任务无法完成。
# 安装必须的包
yum install qemu-guest-agent cloud-init
修改默认的 cloud-init 配置,开启 PasswordAuthentication 认证,vi /etc/cloud/cloud.cfg
修改 ssh_pwauth 的值为 1,(默认为 0,Cloud-init 会自动修改 sshd 配置文件的 PasswordAuthentication 配置为 no,导致无法使用密码的方式登陆系统)
参考下面的操作将虚拟机转换成模板。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
,仅保留以下字段。TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
DEVICE=eth0
ONBOOT=yes
# 注意 histroy 跟命令提示符 # 之间加一个空格
# history -c && init 0
在 PVE 管理控制台中,在虚拟机名称上点击「右键」,选择「转换成模板」。
注意: 利用命令创建和配置虚拟机需要 SSH 远程登录到 PVE 主机。
# 格式:qm clone `模板id` `新虚拟机id` --name `新虚拟机的名称`
qm clone 103 203 --name ksp-master-1
# 设置cpu的通道数socket和核心数core
# 下方命令设置2通道2核心,占用物理cpu 4个线程。模拟物理环境中的2核每核心有2个线程。
# 虚拟CPU中的核心=物理CPU的线程,虚拟CPU的通道=物理CPU的核心,虚拟CPU的个数=物理cpu的路数(几颗cpu)
# 物理CPU占用量=虚拟个数*虚拟通道数*虚拟核心数,
qm set 203 --sockets 2 --cores 2
# 设置内存
# PVE要求内存单位是MB,内存数为整数且是16的倍数,默认512
qm set 203 --memory 16384
# 虚拟机名称 203,槽位 scsi1,存储名称:容量大小(local:100)
qm set 203 --scsi1 iothread=1,local:100
# 虚拟机名称 203,网络设备名称 net1,桥接的网桥名称 vmbr1
qm set 203 --net1 model=virtio,bridge=vmbr1
# 虚拟机名称 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
qm start 203
批量创建需求如下:
使用下面的 Shell 脚本批量创建虚拟机:
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
说明: 命令执行结果如下图所示
# 停止虚拟机
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
本文主要实战演示了在 PVE 虚拟化上创建 CentOS 7.9 虚拟机模板的详细过程。同时,介绍了如何利用 PVE 命令行管理虚拟机和存储资源。
概括总结全文主要涉及以下内容:
本文制作的虚拟机模板虽然是基于 CentOS 7.9 ,但是对于 Ubuntu、openEuler 等操作系统同样具有借鉴意义,只是网卡配置和 cloud-init 等安装包的名称和安装命令不一样。
本文的核心价值在于基于 PVE 自动化创建和配置虚拟机,可以极大的提高运维人员的学习和工作效率。
本文介绍的内容可直接用于个人测试的 PVE 环境,同样适用于使用 PVE 作为研发测试环境的团队。
如果你喜欢本文,请持续关注我,并将本文分享给你的小伙伴!
云原生运维实战系列文档,是 知识星球 运维有术 推出的云原生运维实战训练营系列课程的实战文档。
该系列文档从纯实战角度出发,无废话、纯实战快速带你玩转云原生运维。
本系列文档内容涵盖 (但不限于) 以下技术领域:
获取更多的云原生运维实战技能,请持续关注我,也可以直接加入我们。
Get 技术支持
Get 文档 / 代码
Get 视频
版权声明
About Me
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有