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

问题概述:

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

解决方案:

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

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

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

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
# 使用一个极简的基础镜像
FROM scratch

# KubeVirt 要求镜像里有 /disk/disk.img
# 我们把 virtio-win ISO 直接当作 disk.img
ADD virtio-win.iso /disk/disk.img
  1. 然后,在 /opt/virtio-win 目录中构建镜像:
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 驱动安装挂载配置:

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值