主机管理
用户可以从主机页面查看和管理 Harvester 节点。第一个节点默认为集群的管理节点。当节点数量大于等于三个时,先加入的另外两个节点会自动升级为管理节点,从而形成一个高可用 (HA) 集群。
备注
由于 Harvester 建立在 Kubernetes 之上并使用 etcd 作为数据库,因此当管理节点的数量是 3 时,最大节点容错为 1。
节点维护
Admin 用户可以点击 Enable Maintenance Mode 来自动驱逐节点中所有的虚拟机。这将使用虚拟机热迁移
功能,来将所有虚拟机自动迁移到其他节点。要使用这个功能,至少需要有两个 active
的节点。
封锁节点 (Cordon)
封锁节点会将节点标记为不可调度。此功能适用于在短期维护(如重启,升级或停用)时在节点上执行短期任务。完成后,重新打开电源并通过取消封锁使节点再次可调度。
删除节点
删除节点有两个步骤:
从 Harvester 删除节点
- 前往 Hosts 页面
- 找到需要修改的节点,点击 ⋮ > Delete。
在节点中卸载 RKE2
- 作为
root
用户登录到节点。 - 运行
rke2-uninstall.sh
删除整个 RKE2 服务。
- 作为
警告
删除 RKE2 服务后,你将丢失 control plane 节点的所有数据。
备注
节点硬删除存在一个已知问题。 该问题解决后,可以跳过 RKE2 节点卸载的步骤。
多磁盘管理
添加其他磁盘
用户可以从主机编辑页面查看和添加多个磁盘作为附加数据卷。
- 前往 Hosts 页面。
- 找到需要修改的节点,点击 ⋮ > Edit Config。
- 选择 Storage 选项卡并单击 Add Disk。
警告
从 Harvester v1.0.2 开始,我们不再支持将分区添加为附加磁盘。如果你想将其添加为附加磁盘,请先删除所有分区(例如,使用 fdisk
)。
- 选择额外的原始块设备,将其添加为额外的数据卷。
- 如果块设备从未被强制格式化,则需要
Force Formatted
选项。
- 如果块设备从未被强制格式化,则需要
- 最后,你可以再次点击 ⋮ > Edit Config 查看新添加的磁盘。同时,你还可以添加 “Host/Disk” 标签(详见下一节)。
备注
要让 Harvester 识别磁盘,每个磁盘都需要有一个唯一的 WWN。否则,Harvester 将拒绝添加磁盘。 如果你的磁盘没有 WWN,你可以使用 EXT4
文件系统对其进行格式化,以帮助 Harvester 识别磁盘。
备注
如果你在 QEMU 环境中测试 Harvester,你需要使用 QEMU v6.0 或更高版本。以前版本的 QEMU 将始终为 NVMe 磁盘模拟生成相同的 WWN,这将导致 Harvester 不添加其他磁盘。
存储标签
存储标签功能用于仅允许使用某些节点或磁盘来存储 Longhorn 卷数据。例如,对性能有要求的数据只能使用标记为 fast
、ssd
或 nvme
的高性能磁盘,或者只使用标记为 baremetal
的高性能节点。
此功能同时支持磁盘和节点。
设置
你可以通过 Harvester UI 上的主机页面设置标签:
- 点击
Hosts
>Edit Config
>Storage
。 - 单击
Add Host/Disk Tags
开始输入标签,然后按回车键来添加新标签。 - 点击
Save
来更新标签。 - 在 StorageClasses 页面上,创建一个新的存储类并在
Node Selector
和Disk Selector
字段中选择已定义的标签。
节点或磁盘上的所有现有调度卷都不会受到新标签的影响。
备注
为同一个卷指定多个标签时,磁盘和节点(磁盘所在的节点)必须具有所有指定的标签才能使用。
Ksmtuned 模式
从 v1.1.0 起可用
Ksmtuned 是一个部署为 DaemonSet 的 KSM 自动化工具,用于在每个节点上运行 Ksmtuned。它将通过观察可用内存百分比(即 Threshold Coefficient,阈值系数)来启动或停止 KSM。默认情况下,你需要在每个节点 UI 上手动启用 Ksmtuned。1-2 分钟后,你将能够从节点 UI 中看到 KSM 统计信息。有关更多信息,请参阅 KSM。
快速运行
- 前往 Hosts 页面。
- 找到需要修改的节点,点击 ⋮ > Edit Config。
- 选择 Ksmtuned 选项卡,并在 Run Strategy 中选择 Run。
- (可选)你可以根据需要修改阈值系数。
- 点击 Save 进行更新。
- 等待大约 1-2 分钟,然后你可以单击你的节点 > Ksmtuned 选项卡来检查统计数据。
参数
运行策略:
- Stop:停止 Ksmtuned 和 KSM。VM 仍然可以使用共享内存页面。
- Run:运行 Ksmtuned。
- Prune:停止 Ksmtuned 并修剪 KSM 内存页面。
Threshold Coefficient:配置可用内存百分比。如果可用内存小于阈值,则启动 KSM;否则,将停止 KSM。
Merge Across Nodes:是否可以合并来自不同 NUMA 节点的页面。
模式:
- Standard:默认模式。控制节点 ksmd 大约使用单个 CPU 的 20%。使用的参数如下:
Boost: 0
Decay: 0
Maximum Pages: 100
Minimum Pages: 100
Sleep Time: 20
- High-performance:节点 ksmd 使用单个 CPU 的 20% 到 100%,具有更高的扫描和合并效率。使用的参数如下:
Boost: 200
Decay: 50
Maximum Pages: 10000
Minimum Pages: 100
Sleep Time: 20
- Customized:你可以自定义配置以达到你想要的性能。
Ksmtuned 使用以下参数来控制 KSM 效率:
参数 | 描述 |
---|---|
Boost | 如果可用内存小于阈值系数,则每次扫描的页数都会增加。 |
Decay | 如果可用内存大于阈值系数,则每次扫描的页数都会减少。 |
Maximum Pages | 每次扫描的最大页数。 |
Minimum Pages | 每次扫描的最小页数,也是第一次运行的配置。 |
Sleep Time (ms) | 两次扫描之间的间隔,通过公式(Sleep Time 16 1024* 1024 / Total Memory)计算得出。最小值:10 毫秒。 |
例如,假设你有一个使用以下参数的 512GiB 内存节点:
Boost: 300
Decay: 100
Maximum Pages: 5000
Minimum Pages: 1000
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)。