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 驱动版本以及你的镜像仓库修改相应字段。

相关推荐
打工仔折腾 AI6 小时前
FaceFusion本地换脸实战:Windows整合包、模型选择与遮罩调参记录
人工智能·windows·后端·python·深度学习·性能优化·ai agent 实战
小蜗牛狂飙记8 小时前
Windows 双击 Jar 包无反应,不用写 bat 脚本!Jarfix 一键修复(以 Struts2 扫描工具为例)
windows·struts·jar
坐看风云变幻9 小时前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight
IT技术分享社区10 小时前
在 Windows 上跑未改动的 Linux 程序:微软 LiteBox v0.1 把这件事变简单了
linux·运维·windows·microsoft·开源
kakakahahahaha10 小时前
Win10/Win11 Windows Hello指纹不可用处理:WbioSrvc、传感器驱动与登录策略
windows·电脑·笔记本电脑·内容运营·软件需求
小黄人软件10 小时前
粘贴助手C++版 支持 Windows 7 / 10 / 11 不会出现缺少api-ms-win-core-path-11-1-0.dll
开发语言·c++·windows
Vex2une19 小时前
Windows 性能监视器发展史:从 PerfMon 计数器到 XPerf 深度诊断
windows·wpa·etw·性能监视器·perfmon·性能计数器·xperf
在角落发呆19 小时前
工具配置备份步骤:从手动备份到自动化方案
运维·windows·自动化
Vd7H20A720 小时前
Windows 下用 llama.cpp 运行 Qwen3.8-27B 并开启 512K 上下文 完全指南
windows·llama
kakakahahahaha1 天前
Win10/Win11扬声器有电平无声音:Audio服务、默认设备与驱动修复
windows·电脑·笔记本电脑·软件需求·windows电脑没有声音