这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

构建模板

在 debian 12 上构建用于编程开发相关的模板

1 - 构建 basic 模板

构建最基本的 debian 13 系统

https://skyao.net/learning-pve/templates/debian13/basic/

1.1 - 构建 basic 模板

创建 debian 13 基础模板

制作过程

参考 debian 学习笔记 的 pve 安装文档, 安装 debian 13 操作系统。

然后完成基本配置,内核配置,并通过 timeshift 进行系统备份。

模板内容

debian 13

  • apt 升级到 debian 13.6.0
  • 更新 apt 到最新内核 6.12.48
  • 安装 timeshift, zsh/ohmyzsh, git, dkms, iperf/iperf3, unzip zip curl
  • 添加 proxyon/proxyoff alias for different locations
  • 修复 path 不足问题,包括用户 root 和 sky
  • 安装 sftp server, nfs server 和 client, samba server

地域迁移

当迁移到其他地域时,需要修改的设置有

  1. proxy 设置

    vi ~/.zshrc
    

    修改 proxyon:

    alias proxyon='proxyon-nansha'
    

1.2 - 创建虚拟机

创建使用 debian 13 基础模板的虚拟机

创建虚拟机

临时使用

为了加速创建,可以先将模板克隆到本地,然后从本地的模板中采用 Linked Clone 方式克隆。

这样从模板 clone 虚拟机, 速度会非常快,而且空间占用也非常小。

使用完成后删除即可。因为不需要长期使用和维护,因此不存在多版本问题。每次 Linked Clone 方式克隆最快最不占用磁盘空间。

长期使用

长期使用时,还是采用 full clone 的方式比较好,后续可以单独为这台虚拟机进行 apt upgrade。

Linked Clone 方式克隆最大的麻烦是无法跨 template 升级,因此如果 template 有更新,就会出现版本割裂。

修改虚拟机配置

主要是修改虚拟机的 hostname,以及必要时从使用 dhcp 自动获取 ip 地址修改为使用静态 ip 地址。

2 - 构建 dev 模板

构建可快速搭建,可重复使用的编程开发环境

https://skyao.net/learning-pve/templates/debian13/dev/

2.1 - 创建模板

创建基于debian12/13 的 dev 开发模板

制作过程

以 debian 13 为例。

准备虚拟机

从模版 template-debian13-basic-vxx (取最新版本) full clone 克隆一个虚拟机,命名为 template-debian13-dev-v01,VM ID 为 990101.

开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 8 核,内存 32g(mini 8192,memory 32768)。

准备 ssh 证书

重新生成一份 ssh 证书,这个是要提交给 github 的,单独用一份。

搭建开发环境

安装 docker

安装开发工具

参考本读书笔记中的 开发工具 一节, 安装开发工具:

  • sdkman

语言 sdk 和 nexus 私库

参考本读书笔记中的 编程语言 一节, 安装语言 sdk 和对应的 nexus 私库:

  • Java: 包括 maven
  • golang
  • rust
  • python
  • nodejs

地域迁移

当迁移到其他地域时,需要修改的设置除了有 basic 的改动之外,还有 devserver9x 相关的配置:

  1. docker 使用的 habor 代理 : https://skyao.net/learning-docker/docs/repository/harbor/transparent-proxy/

  2. java 的 maven 配置: https://skyao.net/learning-debian/docs/develop/langurage/java/maven/

  3. golang 的 goproxy 配置: https://skyao.net/learning-golang/docs/develop/installation/settings/

  4. rust 的 cargo 代理源配置: ttps://skyao.net/learning-rust/docs/installation/cargo/

  5. python 的 pip 代理配置: https://skyao.net/learning-python/docs/installation/pip/

  6. nodejs 的 代理配置: https://skyao.net/learning-debian/docs/develop/langurage/nodejs/

2.2 - 创建实例

基于模板创建开发环境实例

准备虚拟机

临时使用

为了加速创建,可以先将模板克隆到本地,然后从本地的模板中采用 Linked Clone 方式克隆。

这样从模板 clone 虚拟机, 速度会非常快,而且空间占用也非常小。

使用完成后删除即可。因为不需要长期使用和维护,因此不存在多版本问题。每次 Linked Clone 方式克隆最快最不占用磁盘空间。

长期使用

长期使用时,还是采用 full clone 的方式比较好,后续可以单独为这台虚拟机进行 apt upgrade。

Linked Clone 方式克隆最大的麻烦是无法跨 template 升级,因此如果 template 有更新,就会出现版本割裂。

从模版 template-debian13-dev-vxx 克隆三个虚拟机,命名为 dev111/dev121/dev131,三个开发机备用.

开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 16核 (cpu 亲和性设置为 0-15,用大核),内存 32g (8192 MB 到 32768)。

基本配置修改

修改 hostname 和 使用静态 IP 地址。

理论上应该就可以直接拿来用了。后续如果发现有需要修改的地方,再记录下来。

3 - 构建 devserver 模板

构建用于编程开发的服务器模板

https://skyao.net/learning-pve/templates/debian13/devserver/

3.1 - 创建模板(debian13)

创建 debian 13 开发服务器模板

准备工作

以 debian 13 为例,debian13 后开发服务器不再是一台独立服务器和两块单独的 ssd 硬盘。所有构建方式和之前的有比较大的差异。

准备虚拟机

从模版 template-debian13-basic-v01 (取最新版本) full clone 克隆一个虚拟机,命名为 template-debian13-devserver-v01,VM ID 为 990201.

开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 8 核,内存 16g(mini 8192,memory 16384)。

准备磁盘

devserver 预计会有两台实例,用于两个异地的开发环境。

为每台实例准备了 2 块两块额外的磁盘,一块用于应用(如数据库,redis,queue等),一块用于数据(如pve需要的nfs,habor / nexus 代理仓库等)。在虚拟机硬件中,增加两块 hard disk,大小为 1024g,scsi 类型,virtIO scsi 控制器。注意把 backup 选项勾选去掉。

在 pve 中,将两块 hard disk 磁盘添加到虚拟机:

在虚拟机中可以看到这两块磁盘:

lspci | grep storage
09:01.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI
09:02.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI
09:03.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI

参考本读书笔记中的 devserver193 一节, 配置好磁盘并进行分区,并挂载到 /mnt/data 和 /mnt/app 目录, 然后安装 nfs server。

搭建开发环境

安装 docker 和 habor

安装开发工具

参考本读书笔记中的 开发工具 一节, 安装开发工具:

  • sdkman
  • nexus

语言 sdk 和 nexus 私库

参考本读书笔记中的 编程语言 一节, 安装语言 sdk 和对应的 nexus 私库:

  • Java: 包括 maven
  • golang
  • rust
  • python
  • nodejs

3.2 - 创建虚拟机

创建使用 devserver 模板的开发服务器虚拟机

创建虚拟机

devserver 模板实际只会有两个虚拟机实例:

  • devserver91: ip 192.168.3.91, 用于苏州汾湖的开发环境
  • devserver92: ip 192.168.0.92, 用于广州南沙的开发环境

由于两个虚拟机都使用到直通的两块 900g 三星 pm983a ssd,因此无法简单的从模板克隆就能自动恢复所有的数据。

实践中,先按照 devserver91 的配置搭建好虚拟机,然后直接使用直通的 ssd 就能正常工作了。

devserver92 是将模板(去除直通的两块 ssd)传送到广州南沙,然后从模板克隆虚拟机,再直通两块空的 ssd 硬盘。

配置 devserver91

几乎不需要配置。

配置 devserver92

原则上需要按照搭建模板的方式, 重头走一遍所有流程来完成 devserver92 的配置。

中间很多步骤是可以重用之前已有的资料和信息,但是需要检查每一个步骤,看是否有需要改动的地方,最重要的改动就是这个机器的 ip 地址从 devserver91 的 192.168.3.91 修改为 devserver92 的 192.168.0.92。

而这个 ip 地址的修改,散落在很多地方, 为了不疏漏,只能重新走一遍完成的流程,好在大部分操作都还继续有效,只是修改个别配置文件更改 ip 地址即可。

4 - 构建 docker 模板

构建可快速搭建,可重复使用的 docker 运行环境

https://skyao.net/learning-pve/templates/debian13/docker/

4.1 - 创建模板

创建基于 debian13 的 docker 模板

制作过程

准备虚拟机

从模版 template-debian13-basic-vxx (取最新版本) full clone 克隆一个虚拟机,命名为 template-debian13-docker-vxx,VM ID 为 9903xx.

搭建开发环境

安装 docker

地域迁移

当迁移到其他地域时,需要修改的设置除了有 basic 的改动之外,还有 devserver9x 相关的配置:

  1. docker 使用的 habor 代理 : https://skyao.net/learning-docker/docs/repository/harbor/transparent-proxy/

4.2 - 创建实例

基于模板创建 docker 实例

准备虚拟机

临时使用

为了加速创建,可以先将模板克隆到本地,然后从本地的模板中采用 Linked Clone 方式克隆。

这样从模板 clone 虚拟机, 速度会非常快,而且空间占用也非常小。

使用完成后删除即可。因为不需要长期使用和维护,因此不存在多版本问题。每次 Linked Clone 方式克隆最快最不占用磁盘空间。

长期使用

docker 模板貌似没什么长期使用的场景。临时用一下就好了,长期用就换 dev 模板吧。

基本配置修改

修改 hostname 和 使用静态 IP 地址。

5 - 构建 k8s 模板

构建用于 k8s 的 pve 模板

https://skyao.net/learning-pve/templates/debian13/k8s/

5.1 - 创建模板

创建 debian 12 k8s 模板

准备工作

准备虚拟机

从模版 template-debian12-basic-v03 (取最新版本) 克隆一个虚拟机,命名为 template-debian12-k8s-v01,VM ID 为 990401.

k8s 需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 8 核,内存 16g(mini 8192,memory 16384)。

搭建k8s

目前采用的是预热安装的方式,详细参考:

https://skyao.net/learning-kubernetes/docs/installation/kubeadm/debian12/prewarm/

5.2 - 创建虚拟机

创建使用 k8s 模板的虚拟机

创建虚拟机

从模板 template-debian12-k8s-v01 克隆一个虚拟机,命名为 k8sxxx。

配置虚拟机

参考: 克隆后的配置 一节

修改hostname 为 k8sxxx,设置 ip 地址为固定ip。

重启。

搭建k8s

wd k8s

sudo ./install_k8s_prewarm.zsh 192.168.3.112

安装完成之后记得 timeshift 备份:

sudo timeshift --create --comments "setup k8s to be host k8s112"