安装 PVE 驱动的个人虚拟化实验环境

status
Published
type
Post
slug
my-homelab-powered-by-pve-install
date
Dec 26, 2023
tags
PVE
Linux
Config
DevOps
summary
PVE 是一款个人虚拟化环境软件,可以在小型主机或老旧笔记本上安装,提供虚拟化环境来构建自己的 HomeLab。安装 PVE 的步骤包括准备引导工具、下载安装 PVE 镜像、配置软件源、创建模板等。通过 PVE,可以方便地管理和部署虚拟机,进行基础设施即代码的实践。

准备

引导工具

使用 Ventoy 来将U盘制作为启动设备
2023-12 当前正式版 Ventoy 无法启动 PVE 8.1,需使用 CI 版本:https://github.com/ventoy/Ventoy/actions/runs/7088423200

PVE 镜像

当前最新版本 8.1

安装

可参考官方 wiki 说明:
Installation - Proxmox VE
////////////////////////////////////////////////////////////////////////// // asciidoc JS helper for Proxmox VE mediawiki pages // // code based on original asciidoc.js, but re-written using jQuery // ////////////////////////////////////////////////////////////////////////// var asciidoc = { toc: function ($content) { // toc generator var tocholder = $content.find('#toc'); if (!tocholder) { return; } tocholder.html(''); tocholder.hide(); var html = "<div id=\"toctitle\"><h2>Contents</h2></div><ul>"; var n = 0; $content.find("div.sect1").each(function(){ var h = jQuery(this).find("h2").first(); var id = h.attr("id"); if (id != null) { n++; html += "<li class=\"toclevel-1\">" + "<a href=\"#" + id + "\">" + "<span class=\"toctext\">" + h.html() + "</span></a></li>"; } }); html += "</ul>"; if (n > 3) { tocholder.html(html); tocholder.show(); } }, // footnote generator footnotes: function ($content) { var noteholder = $content.find('#footnotes'); if (!noteholder) { return; } noteholder.html(''); // Rebuild footnote entries. var refs = {}; var n = 0; var inner_html = ''; $content.find("span.footnote").each(function(){ n++; var span = jQuery(this); var note = span.attr("data-note"); var id = span.attr("id"); if (!note) { // Use [\s\S] in place of . so multi-line matches work. // Because JavaScript has no s (dotall) regex flag. note = span.html().match(/\s*\[([\s\S]*)]\s*/)[1]; span.html("[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + "' title='View footnote' class='footnote'>" + n + "</a>]"); span.attr("data-note", note); } inner_html += "<div class='footnote' id='_footnote_" + n + "'>" + "<a href='#_footnoteref_" + n + "' title='Return to text'>" + n + "</a>. " + note + "</div>"; if (id != null) { refs["#"+id] = n; } }); if (inner_html) { noteholder.html("<hr>" + inner_html); } if (n != 0) { // process footnoterefs. $content.find("span.footnoteref").each(function(){ var span = jQuery(this); var href = span.find("a").first().attr("href"); href = href.match(/#.*/)[0]; // in case it return full URL. n = refs[href]; span.html("[<a href='#_footnote_" + n + "' title='View footnote' class='footnote'>" + n + "</a>]"); }); } } }; // add init to mediawiki resource loader queue (window.RLQ=window.RLQ||[]).push(function(){ // cannot use mw.hook directly here yet, the mediawiki.base module is not yet available mw.loader.implement('pve.doctoc', function() { mw.hook('wikipage.content').add(function($content) { asciidoc.toc($content); asciidoc.footnotes($content); }); }); });
安装完成后,即可根据过程中配置的IP地址,在同一局域网其他机器浏览器访问 https://IP:8006
用户名 root ,密码为安装过程中所配置的,登录成功即可看到如下界面
notion image

配置

订阅弹窗去除

软件源

  • 删除企业订阅源
  • Proxmox 软件源镜像
  • Debian 系统源镜像
  • LXC 源镜像(CT Templates)
  • Ceph 源
如果是使用的老旧的笔记本电脑安装,可考虑如下配置

创建模板

创建 Debian Cloud-Init Template

  • 选择镜像
这里我们选用 genericcloud-amd64.qcow2
  • 下载镜像
打开 PVE Shell
  • 创建虚拟机
notion image
此时如无特殊需要或问题,就可以把此虚拟机转换成模板了,执行命令: qm template 100 。但为了使用更顺手,我还希望对此虚拟机做一些配置后再转换为模板。
Cloud-Init 页面配置说明
用户
  • 系统内第一个非 root 用户的名称,可自定义(建议配置)
  • 若未配置
    • 系统启动后不会新增用户,默认使用 root 用户
    • 默认允许 root 用户通过 SSH 登录
密码
  • 系统内第一个非 root 用户的密码,可自定义(建议配置)
  • 若【用户】未配置,则此处的密码则为 root 密码
DNS 域 / DNS 服务器
  • 留空则使用 DHCP,配置了则使用静态 DNS
SSH 公钥
  • 若未配置,则 SSH 允许通过密码登录
  • 若已配置,则 SSH 禁止通过密码登录,仅允许通过公钥对应的私钥登录
IP 配置
  • 可分别配置对应网卡的 IPv4 和 IPv6 地址策略
  • 支持静态 IP 或 DHCP
 
  • 配置虚拟机
启动刚刚配置的虚拟机,进入 Shell
软件源修改,文件位于 /etc/apt/mirrors/
以上配置完成后,将虚拟机关机,执行命令 qm template 100 转换为模板。
在 Web 页面上可以查看该模板,后续即可在页面上基于此模板快速创建虚拟机了。当然也可以执行命令qm clone 100 101 --name vm101 --full 来进行该操作。
notion image
克隆配置说明
模式
  • 两种模式的区别
    • 链接克隆 :类似快照,磁盘上仅存储「克隆后的副本相对于模板发生变化的部分」,克隆后的虚拟机无法使用迁移功能,但优势是占用的磁盘空间较小
    • 完整克隆 :直接将模板对应的虚拟机磁盘文件全量复制一份,虚拟机中的任何改动,只会存储在自己的虚拟磁盘文件中,可以在 PVE 集群中自由地迁移
  • 如果 PVE 宿主机只有一台,即 PVE 是单节点模式部署的,那么此处可以随意选择
  • 如果 PVE 宿主机不止一台,且组成了集群,有节点迁移和高可用的需求,那么此处最好选择 完整克隆
VM ID
  • 可以自定义,也可以使用 PVE 默认的自增 ID
名称
  • 需要自己定义一个,开机后,cloud-init 会使用虚拟机名称作为虚拟机的 hostname
克隆完成后进入虚拟机的「硬件」页面,按实际需要调整虚拟机的硬件配置:硬盘、内存
处理器、网络等。
 
下一步准备使用 Terraform 来管理部署 PVE 中的虚拟机,体验一下基础设施即代码 (IaaS)。
 
 

参考致谢


2020 - 2024 © HK