Windows 虚拟机配置与驱动安装记录

问题概述:

  • 问题:Windows 虚拟机未能通过 DHCP 获取 IP 地址,网络无法连接。
  • 环境:KubeVirt 与 Kube-OVN 环境下的 Windows 虚拟机,网络配置为桥接模式(Underlay)。

解决方案:

步骤 1:下载完整 virtio-win ISO

由于 KubeVirt 需要使用 virtio 驱动来使 Windows 虚拟机 正常连接网络,首先需要下载并使用完整的 virtio-win ISO,其中包含所有必须的驱动文件。

在一台可以访问外网的机器上执行以下命令:

bash 复制代码
mkdir -p /opt/virtio-win
cd /opt/virtio-win

# 使用 virtio-win 的 0.1.240 版本,版本可以修改为需要的版本
curl -L -o virtio-win.iso \
  https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.240-1/virtio-win-0.1.240.iso

或者可以手动下载 ISO 文件,并将其上传到你的服务器,只要确保文件在某个目录下即可。

步骤 2:容器化 virtio-win ISO

为了让 KubeVirt 使用 virtio-win ISO ,我们将其容器化,放入一个 Docker 镜像中,并命名为 virtio-win 镜像。步骤如下:

  1. /opt/virtio-win 目录下创建一个 Dockerfile
Dockerfile 复制代码
# 使用一个极简的基础镜像
FROM scratch

# KubeVirt 要求镜像里有 /disk/disk.img
# 我们把 virtio-win ISO 直接当作 disk.img
ADD virtio-win.iso /disk/disk.img
  1. 然后,在 /opt/virtio-win 目录中构建镜像:
bash 复制代码
cd /opt/virtio-win

# 构建 Docker 镜像
docker build -t registry.cn-shanghai.aliyuncs.com/akops/virtio-win-0.1.240:latest .

# 登录到你的 Docker 仓库(如阿里云仓库)
docker login registry.cn-shanghai.aliyuncs.com

# 推送镜像到仓库
docker push registry.cn-shanghai.aliyuncs.com/akops/virtio-win-0.1.240:latest

这将会把 virtio-win ISO 转换为镜像,推送到你的镜像仓库。KubeVirt 通过这个镜像挂载虚拟光盘来进行驱动安装。

步骤 3:网卡配置

双击 virtio-win-gt-x64 文件,按提示完成驱动安装。

安装完成后,Windows 虚拟机能够识别并使用 virtio 驱动,并成功获得网络 IP。

  • 驱动安装后,Windows 会重新识别网络接口,并显示 Red Hat VirtIO Ethernet Adapter
  • ipconfig /all 中,确认 Windows 虚拟机获得了 10.47.13.13 的 IP 地址,并且可以访问网络。

步骤 4:验证与测试

  • 通过 ping 命令,确认 Windows 虚拟机与宿主机及其它设备之间的网络连接正常。
  • 确认 Windows 虚拟机 已经可以通过 10.47.13.13 地址访问外部网络。

总结:

通过安装 virtio-win-gt-x64 驱动,Windows 虚拟机成功识别并配置了网络接口,解决了获取 IP 的问题。现在,Windows 虚拟机可以正常通过 DHCP 获取 IP,并通过该 IP 访问内外网。


附:KubeVirt Windows VM 网络配置 (YAML)

以下是 Windows 虚拟机 YAML 配置示例,包含 virtio 驱动安装挂载配置:

yaml 复制代码
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: windows-vm
  namespace: vm
  annotations:
    ovn.kubernetes.io/logical_switch: vm-sub-201
spec:
  running: true
  template:
    metadata:
      labels:
        kubevirt.io/vm: windows-vm
      annotations:
        ovn.kubernetes.io/logical_switch: vm-sub-201
      
    spec:
      domain:
        devices:
          interfaces:
            - name: default
              bridge: {}      # 使用桥接模式
          disks:
            - name: windows-iso
              bootOrder: 1
              cdrom:
                bus: sata
                readonly: true
            - name: windows-disk
              bootOrder: 2
              disk:
                bus: virtio
            - name: virtio-drivers
              cdrom:          # 挂载 virtio 驱动 ISO
                bus: sata
                readonly: true
      networks:
        - name: default
          pod: {}
      volumes:
        - name: windows-iso
          persistentVolumeClaim:
            claimName: windows-iso
        - name: windows-disk
          persistentVolumeClaim:
            claimName: windows-disk
        - name: virtio-drivers
          containerDisk:
            image: registry.cn-shanghai.aliyuncs.com/yourrepo/virtio-win-0.1.240:latest

记得根据使用的 virtio 驱动版本以及你的镜像仓库修改相应字段。

相关推荐
非凡ghost1 天前
CoolUtils PDF Combine(PDF合并工具)
windows·学习·pdf·软件需求
就叫飞六吧1 天前
JSONPath“隔空取物”思想,直击JSON深处的目标字段
服务器·windows·json
love530love1 天前
【笔记】ComfyUI “OSError: [WinError 38] 已到文件结尾” 报错解决方案
人工智能·windows·python·aigc·comfyui·winerror 38
Shi_haoliu1 天前
inno setup6.6.1实例,制作安装包,创建共享文件夹,写入注册表(提供给excel加载项,此文章解释iss文件)
前端·vue.js·windows·excel
nnsix1 天前
文件系统、分配单元大小 什么意思
windows
Boxsc_midnight1 天前
【数字人学习之语音合成】Fun-CosyVoice3-0.5B-2512的windows系统中本地部署的方法
windows·学习·cosyvoice3
Zfox_1 天前
无缝穿越系统边界:节点小宝4.0如何让我的Mac/iOS像访问本地盘一样操控Windows
windows·macos·ios·节点小宝
嵌入式学习和实践1 天前
Linux/Windows 系统架构查看、安装包选择指南(嵌入式开发场景适配)
linux·windows·系统架构
私人珍藏库1 天前
[Windows] PDF 专业电子签章工具 v4.8
windows·pdf
一只蚊子01 天前
C# WinForms配置Halcon
windows·c#·halcon