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

相关推荐
一瞬祈望2 小时前
【环境配置】Windows 下使用 Anaconda 创建 Python 3.8 环境 + 安装 PyTorch + CUDA(完整教程)
pytorch·windows·python
曹牧2 小时前
Java String[] 数组的 contains
java·开发语言·windows
Hotakus3 小时前
手柄也能辅助绘画与办公 XialloControl 新的手柄映射键鼠软件
windows·开源·github·开源软件·个人开发
dyxal4 小时前
Windows 内网环境离线安装 MySQL 完整指南
windows·mysql·adb
Misnice4 小时前
pip 查看当前包列表
windows·python·pip
一只栖枝5 小时前
K8s 认证级别怎么选?适配不同运维场景
云原生·容器·kubernetes·k8s·cka
油丶酸萝卜别吃7 小时前
在Spring Boot项目中使用RestTemplate发送请求时如何处理响应?
windows·spring boot·后端
jiuweiC7 小时前
python 虚拟环境-windows
开发语言·windows·python
虚伪的空想家8 小时前
首发:TDengine3.3.6版本使用K8S部署
java·docker·容器·kubernetes·k8s·时序数据库·tdengine