使用 KubeVirt 基于 ISO 创建 Linux 镜像
本文档介绍了基于开源组件 KubeVirt 实现的虚拟机方案,利用 KubeVirt 虚拟化技术从 ISO 镜像文件创建 Linux 操作系统镜像。
前提条件
-
集群中的所有组件均正常运行。
-
需提前准备好 Linux 镜像,本文以 Ubuntu 操作系统 为例。
-
需提前准备好用于存储镜像的仓库,本文以 build-harbor.example.cn 仓库为例,请根据实际环境替换。
约束与限制
-
启动 KubeVirt 时,自定义镜像的文件系统大小会影响写入镜像到 PVC 磁盘的速度,文件系统过大可能导致创建时间过长。
-
建议保持 Linux 根分区大小低于 100G,以减少初始大小。配置 cloud-init 后,创建虚拟机时为根分区分配更大存储,系统会自动扩展。
操作步骤
将 Linux ISO 镜像转换为 Docker 镜像
-
进入存放 ISO 镜像的目录,在终端执行以下命令,将 ISO 镜像重命名为 ubuntu.iso。
-
执行以下命令创建 Dockerfile。
-
编辑 Dockerfile,添加以下内容并保存。
-
执行以下命令构建 Docker 镜像。
-
执行以下命令将镜像推送到仓库。
创建虚拟机
-
进入 容器平台。
-
在左侧导航栏点击 虚拟化 > 虚拟机。
-
点击 创建虚拟机。
-
在表单页面填写参数,具体参数及配置请参考 创建虚拟机。
-
切换至 YAML。
-
将 spec.template.spec.domain.devices.disks 字段下的配置替换为以下内容。
-
在 spec.template.spec.volumes 字段下添加以下内容。
-
检查 YAML 文件,完成后的完整 YAML 配置如下。
-
点击 创建。
-
点击 操作 > VNC 登录。
-
当出现 press any key boot from CD or DVD 提示时,按任意键进入安装程序;若未看到提示,点击页面左上角的 发送远程命令,然后从下拉菜单选择 Ctrl-Alt-Delete 重启服务器。
注意:如果虚拟机详情页顶部出现提示 当前虚拟机有配置变更需重启生效,请重启,可忽略该提示,无需重启。
安装 Linux 操作系统
-
进入安装页面后,按照安装向导进行操作。本文以安装 Ubuntu 操作系统为例,不同操作系统安装过程中的配置项大致相同,故不再赘述。部分配置项说明如下。
-
等待安装完成。
修改 YAML 文件
-
进入 容器平台。
-
在左侧导航栏点击 虚拟化 > 虚拟机。
-
点击列表中的 虚拟机名称 进入详情页。
-
点击 停止。
-
点击右上角 操作 > 更新。
-
切换至 YAML。
-
确认 spec.template.spec.domain.devices.disks 下名为 rootfs 的磁盘的 bootOrder 为 1,若不是,修改为 1。
-
删除 spec.template.spec.domain.devices.disks 下名为 containerdisk 的相关内容,具体删除内容如下。
-
删除 spec.template.spec.volumes 下名为 containerdisk 的相关内容,具体删除内容如下。
-
点击 更新。
-
点击 启动。
安装所需软件并修改配置
注意:以下命令及配置文件在不同操作系统间可能略有差异,请根据实际环境调整。
-
输入用户名和密码登录操作系统。
-
切换到 root 用户权限。
-
安装软件包。
-
CentOS 系列执行命令:
-
Debian 系列执行命令:
-
-
编辑 SSHD 配置文件。
-
执行以下命令编辑 sshd_config 文件。
-
添加以下配置。
-
保存修改后的配置。
-
-
执行以下命令删除 root 用户默认密码。
-
修改源地址文件。
-
执行以下命令修改系统源地址文件,替换为合适的镜像站地址。
-
修改完成后保存配置。
-
-
修改 cloud-init 配置,实现根目录自动扩容。
-
执行以下命令编辑 cloud.cfg 配置文件。
-
添加以下配置内容。
-
修改完成后保存配置。
-
-
配置完成后,关闭操作系统。
导出并使用自定义 Linux 镜像
具体操作请参考 导出虚拟机镜像。