在 Proxmox VE (EA) 中配置 KVM vSocket

Prev Next

**注意:**这是一个仅限有限发布的早期可用性(EA)功能。 有关更多信息,请联系您的 Cato Networks 代表或发送电子邮件至 ea@catonetworks.com。

概况

本文介绍了如何在使用 Proxmox 虚拟环境(Proxmox VE)管理的主机上部署 KVM vSocket。 Proxmox VE 使用 QEMU/KVM,因此 vSocket 部署模型与标准 Linux KVM(libvirt/QEMU)主机相同:vSocket 以 QCOW2 映像形式分发,并使用 cloud-init 引导。 不同之处在于管理层——您通过 Proxmox 网页界面创建和管理虚拟机,而不是使用 virt-install 或 virsh。

关于通用 KVM vSocket 需求、cloud-init 用户数据 设置以及 Cato 管理应用程序(CMA)中的站点创建流程,请参见配置 KVM vSocket 站点。

以下是 Proxmox VE 部署 KVM vSocket 的主要阶段:

  1. 在 CMA 中创建 vSocket 站点并复制序列号 (S/N)。
  2. 下载 QCOW2 映像并生成 cloud-init 种子 ISO。
  3. 将 QCOW2 映像和种子 ISO 上传到 Proxmox 存储。
  4. 在 Proxmox 网页界面中使用 UEFI 固件与 virtio 设备创建虚拟机。
  5. 添加串口和额外的网络接口到虚拟机。
  6. 启动虚拟机并验证 vSocket 是否连接到 CMA。

准备在 Proxmox VE 中配置 KVM vSocket

这些是准备创建 KVM vSocket 并将其连接到 Cato 云的前提条件:

  • 启用了 KVM(硬件虚拟化)功能的 Proxmox VE 主机,并支持访客的 UEFI(OVMF)。
  • Proxmox 主机 CPU 是 Haswell 架构或更新的型号。
  • 从 Cato Networks 存储库下载的 KVM vSocket 的 QCOW2 映像。
  • 一个云初始化种子ISO,提前与站点的序列号生成(请参见创建云初始化种子ISO)。
  • 生成种子 ISO 的工具(例如,mkisofs 或 genisoimage)。
  • vSocket 的 WAN1 接口需要具有互联网连接和公共 DNS 服务。
  • Proxmox 桥接(例如,vmbr0)连接 WAN、LAN 和可选的管理接口到相关网络。
  • 仅连接至多 4 个网络接口(NIC)到 vSocket。 连接超过 4 个 NIC 可能会导致 vSocket 出现问题.

注意: 不支持硬件 NIC 直通(PCI 直通)和 SR-IOV。

推荐的虚拟机设置

设置 推荐值
机器类型 q35
BIOS / 固件 OVMF (UEFI),不含 EFI 磁盘
CPU 类型 host (Haswell 架构或更新的主机 CPU)
vCPU 2 颗或更多
内存 4096 MB 或更多
主磁盘 导入的 QCOW2 映像,VirtIO 块总线(8 GB 精简后备存储)
Cloud-init 媒体 种子 ISO,附加为 CD-ROM 驱动器
NIC 模型 VirtIO(半虚拟化)
NIC 数量 2 到 4 个接口

在 Proxmox VE 部署 KVM vSocket 的最佳实践

  • 直接从 Cato QCOW2 映像部署 vSocket,以避免硬件兼容性问题,并确保正确应用所有必需的硬件设置。
  • 保留 QCOW2 原始映像的未更改副本,并为每个 vSocket 虚拟机导入干净的映像副本。 cloud-init 种子 ISO 仅在首次启动时运行。 如果配置未正确应用,通常从干净映像重建虚拟机比修复部分初始化的虚拟机更快。
  • 在首次启动前拍摄虚拟机的 Proxmox 快照,以便在引导配置不正确时可以恢复初始状态。
  • 为每个 vSocket 虚拟机(包括 HA 对的每个成员)创建具有相关站点序列号的唯一种子 ISO。
  • 为网络和磁盘设备使用 virtio——不需要 NIC 仿真。
  • 在虚拟机未完全配置之前不要启动它。 cloud-init 种子 ISO 仅在首次启动时读取。

创建 KVM vSocket 站点

在 CMA 中,创建一个具有 vSocket KVM 连接类型的新站点,然后从 站点配置 > 套接字 复制序列号 (S/N)。 您需要在 cloud-init 用户数据 文件中输入此序列号(包括破折号)。

完整过程请参见配置 KVM vSocket 站点。

在 Proxmox VE 上部署 vSocket 虚拟机

步骤 1 – 准备 Proxmox 网络

确保 Proxmox 主机为您连接到 vSocket 的每个接口提供 Linux 桥接:

  • WAN1 – 可以访问互联网和公用 DNS 服务的桥接(例如,vmbr0)。 这是一个强制接口。
  • LAN1 – vSocket 背后的局域网段桥接。 这是一个强制接口。
  • MGMT(可选)——用于管理访问 vSocket 的桥接。
  • WAN2(可选)——第二条 WAN 链路的桥接。

您可以在网络设备上使用 VLAN 标签来分隔共享桥接的局域网段。

对于 HA 部署,两个 vSockets 的 LAN 接口必须在同一广播域(同一桥接和 VLAN)中。

步骤 2 – 创建 cloud-init 种子 ISO

使用 NoCloud 种子 ISO 通过 cloud-init 引导 KVM vSocket。 创建一个包含一个文件的目录:

TMPDIR=$(mktemp -d)\ntouch $TMPDIR/user-data

用站点配置填充 用户数据。 该文件使用简单的 TOML(key = value)格式,并支持注释。 序列号是强制性的;每个接口的网络设置是可选的(接口默认为 DHCP)。

# 强制:来自 CMA 站点的序列号(站点配置 > 套接字)\nserial = "XXXX-XXXX-XXXX-XXXX"\n\n# 可选的每接口网络设置。\n# 对每个接口重复 [[network]] 块;名称必须唯一\n# 并匹配真实接口(WAN1、WAN2、LAN1 等)。\n\n[[network]]\nname = "WAN1" # 强制性\naddressing_type = "Static" # "Static" 或 "DHCP"\naddress = "192.168.50.201" # 如果是 Static 则强制性\nnetmask = "255.255.255.0" # 如果是 Static 则强制性\ndefault_gw = "192.168.50.1" # 如果是 Static 则强制性\nprimary_dns = "192.168.50.1" # 如果是 Static 则强制性\nsecondary_dns = "8.8.4.4" # 可选\n\n# DHCP 是默认的,因此该块是可选的/冗余的。\n[[network]]\nname = "WAN2"\naddressing_type = "DHCP"

将文件打包为名为 cidata 的种子 ISO:

pushd $TMPDIR\nmkisofs -output seed.iso -volid cidata -joliet -rock user-data\npopd

为 ISO 赋予一个识别所使用的 vSocket 虚拟机的名称(例如,seed-<site-name>.iso),这样您在创建虚拟机时可以选择正确的 ISO。

步骤 3 – 将文件上传到 Proxmox 存储

  1. 将种子 ISO 上传到托管虚拟机的节点的 ISO 映像存储(例如,在 ISO Images 部分的 local 存储中)。
  2. 将 vSocket QCOW2 映像上传到同一节点上的存储的 Import 部分。 存储必须启用 Import 内容类型。

为每个 vSocket 虚拟机使用 QCOW2 映像的干净副本。

截图占位符——将种子 ISO 上传到 Proxmox 存储。

截图占位符——上传或导入 QCOW2 映像。

步骤 4 – 创建虚拟机

在 Proxmox 网页界面中,点击“创建虚拟机”并按以下设置配置向导的选项卡。

要创建 vSocket 虚拟机:

  1. 在 常规 选项卡中,选择 节点,然后输入 vSocket 虚拟机的 虚拟机 ID 和 名称。 保持添加到HA复选框未勾选(请参见高可用性(HA)部署)。

  2. 在 操作系统 选项卡:

    1. 选择 使用 CD/DVD 光盘映像文件(iso)。
    2. 对于 存储 和 ISO 映像,请选择您为此 vSocket 创建的种子 ISO。
    3. 对于 访客操作系统,保留默认值(类型:Linux,版本:6.x - 2.6 Kernel)。

    截图占位符——在操作系统选项卡中选择 cloud-init 种子 ISO。

  3. 在 系统 选项卡:

    1. 对于 BIOS,选择 OVMF (UEFI)。
    2. 清除 添加 EFI 磁盘 复选框。 vSocket 映像不需要 EFI 磁盘。
    3. 对于 机器,选择 q35。
    4. 保留默认 SCSI 控制器(VirtIO SCSI 单一)。

    截图占位符——选择的 UEFI 固件和已清除的“添加 EFI 磁盘”。

  4. 在 磁盘 选项卡:

    1. 删除默认磁盘(virtio0)。
    2. 点击 导入,然后在 选择映像 中选择 vSocket QCOW2 映像。
    3. 对于 总线/设备,选择 VirtIO 块,并选择磁盘的 目标存储。

    截图占位符——删除默认磁盘。

    截图占位符——将 QCOW2 映像导入为虚拟机磁盘。

  5. 在 CPU 选项卡中,配置至少 2 个 核心,并选择 host 作为 类型。

    截图占位符——CPU 核心和主机 CPU 类型。

  6. 在 内存 选项卡中,输入至少 4096 MB。

  7. 在 网络 选项卡中,配置第一个网络设备(net0)。 此接口是 vSocket 的 WAN1 接口:

    1. 对于 桥接,选择具有互联网连接的桥接。
    2. 对于 模型,选择 VirtIO(半虚拟化)。
    3. 可选地,清除 防火墙 复选框。
  8. 在 确认 选项卡中,确保 创建后启动未选中,然后单击 完成。

重要提示! 在虚拟机完全配置之前不要启动它。 cloud-init 种子 ISO 仅在首次启动时读取。

步骤 5 – 添加串口和剩余的接口

创建虚拟机后,从虚拟机的 硬件 部分添加其余硬件。

要完成虚拟机硬件配置:

  1. 点击 添加 > 串行端口 添加串行端口 0(serial0)。 串行端口用于访问 vSocket 控制台。
  2. 点击 添加 > 网络设备,并添加 LAN1 接口:
    1. 对于 桥接,选择局域网桥接。
    2. 对于 模型,选择 VirtIO(半虚拟化)。
    3. 可选地,输入 VLAN 标签 以分隔使用同一桥接的局域网段。
  3. 对每个附加接口(管理或 WAN2)重复上一步,最多总计 4 个接口。

网络设备根据其顺序映射到 vSocket 接口:net0 是 WAN1,net1 是 LAN1,后面的设备是可选接口。

截图占位符——添加串行端口。

截图占位符——添加额外的网络设备。

截图占位符——vSocket 虚拟机的完整硬件列表。

步骤 6 –(推荐)拍摄快照

在首次启动前,在虚拟机的 快照 部分点击 拍摄快照 并创建初始状态的快照(例如,pristine)。 如果首次引导配置不正确,您可以恢复到此快照,而不是重新创建虚拟机。

截图占位符——拍摄初始虚拟机状态的快照。

步骤 7 – 启动虚拟机

启动虚拟机。 在首次启动时,vSocket 从种子 ISO 读取配置并开始注册到 Cato 云。

将 vSocket 连接到 CMA

CMA 自动检测 vSocket,并使用序列号(来自 cloud-init 用户数据)将其连接到站点。 要注册,WAN1 接口必须具备互联网连接和公用 DNS 访问,因此它可以到达 Cato 云和 CMA。

  • 如果 WAN1 通过 DHCP 接收到动态 IP 地址,vSocket 就会自动开始注册到 Cato 云。
  • 如果 DHCP 不可用,则在 cloud-init user-data 中为 WAN1 配置静态 IP 地址(参见步骤 2)。
  • 默认情况下,WAN2 接口是禁用的,vSocket 仅使用 WAN1 注册。

要跟踪引导过程和注册,请使用 Proxmox 网页界面中虚拟机的 控制台 部分。 vSocket将其启动输出发送到序列控制台,因此要查看该输出,需要将硬件 > 显示 > 图形卡设置为串行终端0。

高可用性 (HA) 部署

HA的行为类似于物理HA对,在两个KVM vSockets之间使用VRRP。 这与Proxmox集群HA功能(添加到HA选项)是分开的,该功能会在另一个节点上重新启动VM,并且不用于vSocket HA。

  • 部署两个vSocket VM,每个都使用自己副本的QCOW2映像和自己的种子ISO(每个都带有主或次插座的序列号)。
  • 两个VM的LAN接口必须在同一个广播域(同一个桥接和VLAN标签)中,以便VRRP可以运行。 如果VM在不同的Proxmox节点上,LAN桥接器必须连接到相同的2层段。
  • 在CMA中将次要插座添加到站点。 这两个成员组成HA组,交换健康/状态,并根据产品HA设计进行故障转移。
  • HA的健康和状态在CMA中可见。

部署额外的vSocket VM

要在同一Proxmox主机或集群上运行多个vSocket VM:

  • 为每个VM导入干净的QCOW2映像副本。
  • 生成一个带有相关站点序列号的新种子ISO。
  • 使用唯一的VM名称和VM ID。
  • 在需要隔离的情况下,使用单独的LAN桥接器或VLAN标签。

更改vSocket VM配置

如果新配置使用支持的值,可以更改一些VM设置。 重启vSocket VM以使更改生效。

可以更改以下VM设置:

  • 中央处理器使用率
  • 内存
  • 联网,例如添加或移除网络接口

故障排除

VM 启动,但 vSocket 未注册

  • 验证种子 ISO 是否作为 CD-ROM 附加。
  • 验证 ISO 是否包含 user-data 文件。
  • 验证 serial 值是否与 CMA 中站点的序列号匹配。
  • 验证 WAN1 是否具有互联网访问权限和访问公共 DNS 服务的权限。
  • 验证第一个网络设备 (net0) 是否连接到预定的 WAN 桥。

对 cloud-init 配置的更改将被忽略

vSocket 引导程序仅在首次启动时运行。 如果在 VM 初始化后更改 user-data ,更改将不会应用于现有的启动磁盘。 恢复到初始状态的快照,或使用 QCOW2 图像的干净副本和新的种子 ISO 重新创建 VM。

没有控制台输出

  • 验证串口 (serial0) 是否已添加到 VM 中。
  • 要在 Web UI 控制台中查看串口输出,请将 硬件 > 显示 > 显卡 设置为 串口终端 0。

网络未按预期运行

  • 验证每个网络设备连接到的桥接。
  • 验证 VM 配置中的网络设备顺序 (net0 是 WAN1,net1 是 LAN1)。
  • 验证 user-data 文件中的 [[network]] 部分是否按预期使用 DHCP 或静态设置。

相关文章