主机管理

用户可以从主机页面查看和管理 Harvester 节点。第一个节点默认为集群的管理节点。当节点数量大于等于三个时,先加入的另外两个节点会自动升级为管理节点,从而形成一个高可用 (HA) 集群。

主机管理 - 图1备注

由于 Harvester 建立在 Kubernetes 之上并使用 etcd 作为数据库,因此当管理节点的数量是 3 时,最大节点容错为 1。

host.png

节点维护

Admin 用户可以点击 Enable Maintenance Mode 来自动驱逐节点中所有的虚拟机。这将使用虚拟机热迁移功能,来将所有虚拟机自动迁移到其他节点。要使用这个功能,至少需要有两个 active 的节点。

node-maintenance.png

封锁节点 (Cordon)

封锁节点会将节点标记为不可调度。此功能适用于在短期维护(如重启,升级或停用)时在节点上执行短期任务。完成后,重新打开电源并通过取消封锁使节点再次可调度。

cordon-node.png

删除节点

删除节点有两个步骤:

  1. 从 Harvester 删除节点

    • 前往 Hosts 页面
    • 找到需要修改的节点,点击 ⋮ > Delete
  2. 在节点中卸载 RKE2

    • 作为 root 用户登录到节点。
    • 运行 rke2-uninstall.sh 删除整个 RKE2 服务。

主机管理 - 图5警告

删除 RKE2 服务后,你将丢失 control plane 节点的所有数据。

主机管理 - 图6备注

节点硬删除存在一个已知问题。 该问题解决后,可以跳过 RKE2 节点卸载的步骤。

delete.png

多磁盘管理

添加其他磁盘

用户可以从主机编辑页面查看和添加多个磁盘作为附加数据卷。

  1. 前往 Hosts 页面。
  2. 找到需要修改的节点,点击 ⋮ > Edit Config

Edit Config

  1. 选择 Storage 选项卡并单击 Add Disk

Add Disks

主机管理 - 图10警告

从 Harvester v1.0.2 开始,我们不再支持将分区添加为附加磁盘。如果你想将其添加为附加磁盘,请先删除所有分区(例如,使用 fdisk)。

  1. 选择额外的原始块设备,将其添加为额外的数据卷。
    • 如果块设备从未被强制格式化,则需要 Force Formatted 选项。

Force Format

  1. 最后,你可以再次点击 ⋮ > Edit Config 查看新添加的磁盘。同时,你还可以添加 “Host/Disk” 标签(详见下一节)。

Check Result

主机管理 - 图13备注

要让 Harvester 识别磁盘,每个磁盘都需要有一个唯一的 WWN。否则,Harvester 将拒绝添加磁盘。 如果你的磁盘没有 WWN,你可以使用 EXT4 文件系统对其进行格式化,以帮助 Harvester 识别磁盘。

主机管理 - 图14备注

如果你在 QEMU 环境中测试 Harvester,你需要使用 QEMU v6.0 或更高版本。以前版本的 QEMU 将始终为 NVMe 磁盘模拟生成相同的 WWN,这将导致 Harvester 不添加其他磁盘。

存储标签

存储标签功能用于仅允许使用某些节点或磁盘来存储 Longhorn 卷数据。例如,对性能有要求的数据只能使用标记为 fastssdnvme 的高性能磁盘,或者只使用标记为 baremetal 的高性能节点。

此功能同时支持磁盘和节点。

设置

你可以通过 Harvester UI 上的主机页面设置标签:

  1. 点击 Hosts > Edit Config > Storage
  2. 单击 Add Host/Disk Tags 开始输入标签,然后按回车键来添加新标签。
  3. 点击 Save 来更新标签。
  4. StorageClasses 页面上,创建一个新的存储类并在 Node SelectorDisk Selector 字段中选择已定义的标签。

节点或磁盘上的所有现有调度卷都不会受到新标签的影响。

主机管理 - 图15备注

为同一个卷指定多个标签时,磁盘和节点(磁盘所在的节点)必须具有所有指定的标签才能使用。

移除磁盘

移除磁盘前必须先清除磁盘上的 Longhorn 副本。

主机管理 - 图16备注

副本数据会自动重建到另一个磁盘来保持高可用性。

确定要移除的磁盘(Harvester 仪表板)

  1. 前往 Hosts 页面。
  2. 在包含磁盘的节点上,选择节点名称并转到 Storage 选项卡。
  3. 找到要移除的磁盘。假设要移除的是 /dev/sdb,磁盘的挂载点是 /var/lib/harvester/extra-disks/1b805b97eb5aa724e6be30cbdb373d04

Find disk to remove

驱逐副本(Longhorn 仪表板)

  1. 按照此文档启用嵌入式 Longhorn 仪表板。
  2. 访问 Longhorn 仪表板并转到 Node 页面。
  3. 展开包含磁盘的节点。确认挂载点 /var/lib/harvester/extra-disks/1b805b97eb5aa724e6be30cbdb373d04 在磁盘列表中。

Check the removing disk

  1. 选择 Edit node and disks

Edit node and disks

  1. 滚动到要移除的磁盘。
  • Scheduling 设置为 Disable
  • Eviction Requested 设置为 True
  • 选择 Save。不要选择删除图标。

Evict disk

  1. 磁盘将被禁用。等待磁盘副本数变为 0 后再继续移除磁盘。

Wait replicas

移除磁盘(Harvester 仪表板)

  1. 前往 Hosts 页面。
  2. 在包含磁盘的节点上,选择 ⋮ > Edit Config
  3. 转到 Storage 选项卡并选择 x 来移除磁盘。

Remove disk

  1. 选择 Save 以移除磁盘。

Ksmtuned 模式

从 v1.1.0 起可用

Ksmtuned 是一个部署为 DaemonSet 的 KSM 自动化工具,用于在每个节点上运行 Ksmtuned。它将通过观察可用内存百分比(即 Threshold Coefficient,阈值系数)来启动或停止 KSM。默认情况下,你需要在每个节点 UI 上手动启用 Ksmtuned。1-2 分钟后,你将能够从节点 UI 中看到 KSM 统计信息。有关更多信息,请参阅 KSM

快速运行

  1. 前往 Hosts 页面。
  2. 找到需要修改的节点,点击 ⋮ > Edit Config
  3. 选择 Ksmtuned 选项卡,并在 Run Strategy 中选择 Run
  4. (可选)你可以根据需要修改阈值系数

编辑 Ksmtuned

  1. 点击 Save 进行更新。
  2. 等待大约 1-2 分钟,然后你可以单击你的节点 > Ksmtuned 选项卡来检查统计数据

查看 Ksmtuned 统计数据

参数

运行策略

  • Stop:停止 Ksmtuned 和 KSM。VM 仍然可以使用共享内存页面。
  • Run:运行 Ksmtuned。
  • Prune:停止 Ksmtuned 并修剪 KSM 内存页面。

Threshold Coefficient:配置可用内存百分比。如果可用内存小于阈值,则启动 KSM;否则,将停止 KSM。

Merge Across Nodes:是否可以合并来自不同 NUMA 节点的页面。

模式

  • Standard:默认模式。控制节点 ksmd 大约使用单个 CPU 的 20%。使用的参数如下:
  1. Boost: 0
  2. Decay: 0
  3. Maximum Pages: 100
  4. Minimum Pages: 100
  5. Sleep Time: 20
  • High-performance:节点 ksmd 使用单个 CPU 的 20% 到 100%,具有更高的扫描和合并效率。使用的参数如下:
  1. Boost: 200
  2. Decay: 50
  3. Maximum Pages: 10000
  4. Minimum Pages: 100
  5. Sleep Time: 20
  • Customized:你可以自定义配置以达到你想要的性能。

Ksmtuned 使用以下参数来控制 KSM 效率:

参数描述
Boost如果可用内存小于阈值系数,则每次扫描的页数都会增加。
Decay如果可用内存大于阈值系数,则每次扫描的页数都会减少。
Maximum Pages每次扫描的最大页数。
Minimum Pages每次扫描的最小页数,也是第一次运行的配置。
Sleep Time (ms)两次扫描之间的间隔,通过公式(Sleep Time 16 1024* 1024 / Total Memory)计算得出。最小值:10 毫秒。

例如,假设你有一个使用以下参数的 512GiB 内存节点

  1. Boost: 300
  2. Decay: 100
  3. Maximum Pages: 5000
  4. Minimum Pages: 1000
  5. Sleep Time: 50

Ksmtuned 启动时,将 KSM 中的 pages_to_scan 初始化为 1000(Minimum Pages)并将 sleep_millisecs 设置为 10 (50 * 16 * 1024 * 1024 / 536870912 KiB < 10)。

可用内存低于阈值系数时,KSM 将启动。如果检测到它正在运行,pages_to_scan 每分钟增加 300(Boost)直到达到 5000(Maximum Pages)。

可用内存高于阈值系数时,KSM 将停止。如果检测到它已停止,pages_to_scan 每分钟递减 100(Decay)直到达到 1000(Minimum Pages)。