使用 KubeVirt 基于 ISO 创建 Windows 镜像
本文档介绍基于开源组件 KubeVirt 的虚拟机方案,利用 KubeVirt 虚拟化技术通过 ISO 镜像文件创建 Windows 操作系统镜像。
目录
前提条件
-
集群中的所有组件均正常运行。
-
请提前准备好 Windows 镜像和 最新的 virtio-win-tools。
-
请准备好用于存储镜像的仓库,本文以 build-harbor.example.cn 仓库为例,请根据实际环境替换。
约束与限制
-
启动 KubeVirt 时,自定义镜像的文件系统大小会影响将镜像写入 PVC 磁盘的速度,文件系统过大可能导致创建时间延长。
-
建议保持 Linux 根分区或 Windows C 盘小于 100G,以减少初始大小,后续可通过 cloud-init 扩容(Windows 系统需创建后手动扩容)。
操作步骤
创建镜像
通过准备好的 Windows 和 virtio-win ISO 镜像创建 Docker 镜像,并推送到仓库。本文以 Windows Server 2019 为例。
从 Windows ISO 创建 Docker 镜像
-
进入存放 ISO 镜像的目录,在终端执行以下命令,将 ISO 镜像重命名为 win.iso。
-
执行以下命令创建 Dockerfile。
-
编辑 Dockerfile,添加以下内容并保存。
-
执行以下命令构建 Docker 镜像。
-
执行以下命令将镜像推送到仓库。
从 virtio-win ISO 创建 Docker 镜像
-
进入存放 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 时,按任意键进入 Windows 安装程序;如果未看到提示,请点击页面左上角的 发送远程命令,从下拉菜单选择 Ctrl-Alt-Delete 重启服务器。
注意:如果虚拟机详情页顶部出现提示 当前虚拟机有配置变更需重启生效,请重启,可忽略该提示,无需重启。
安装 Windows 操作系统
-
进入安装页面后,按照安装指引完成系统安装。
注意:分区选择步骤中,磁盘总线必须为 sata,才能正确识别磁盘。需依次选择每个分区点击 删除,清除所有分区,由系统自动处理。
-
配置管理员账户密码后,点击页面左上角的 发送远程命令,选择下拉菜单中的 Ctrl-Alt-Delete。
-
出现提示 Ctrl+Alt+Delete 组合键将重启服务器,确认重启 时,点击 确定。
-
输入密码进入 Windows 系统桌面,至此 Windows 操作系统安装完成。
安装 virtio-win-tools
该工具主要包含必要驱动。
-
打开文件资源管理器。
-
双击 CD 驱动器(E:) virtio-win-<version>,运行 virtio-win-guest-tools 目录进入安装页面,按照安装指引完成安装。<version> 部分根据实际情况替换。
-
安装完成后,关闭 Windows 系统电源。
导出自定义 Windows 镜像
具体操作请参考 导出虚拟机镜像。
使用 Windows 镜像
-
进入 容器平台。
-
在左侧导航栏点击 虚拟化 > 虚拟机。
-
点击列表中使用 Windows 镜像创建的虚拟机名称,进入详情页。
-
点击 创建虚拟机。
-
在表单页面填写必要参数,镜像选择导出的 Windows 镜像。详细参数及配置请参考 创建虚拟机。
-
(可选)若使用较新操作系统,如 Windows 11,需启用时钟、UEFI、TPM 等功能。切换到 YAML,将原 YAML 替换为以下内容。
-
点击 创建。
添加内部路由
通过配置 NodePort 类型的内部路由,暴露远程桌面连接端口。
-
进入 容器平台。
-
在左侧导航栏点击 虚拟化 > 虚拟机。
-
点击列表中使用 Windows 镜像创建的虚拟机名称,进入详情页。
-
在 登录信息 区域,点击 内部路由 旁的 添加 图标。
-
按照以下说明配置参数。
-
点击 确定 返回详情页。
-
点击 登录信息 区域的 内部路由 链接。
-
记录基本信息区的 虚拟 IP 和端口区的 主机端口 信息。
远程访问
本文以 Windows 操作系统远程连接为例,其他操作系统可使用支持 RDP 协议的软件进行连接。
-
打开 远程桌面连接。
-
输入在 添加内部路由 步骤中保存的虚拟 IP 和主机端口,格式为 虚拟 IP:主机端口 ,例如:192.1.1.1:3389 。
-
点击 连接。