前提

你需要提前了解,hwameistor的组件生命周期管理:

1. LocalDiskManager

作用: LocalDiskManager 负责管理节点上的物理磁盘资源。它发现、监控和维护节点的本地磁盘信息,确保系统对可用磁盘资源的了解是最新的。

生命周期管理:

  • 启动: 当 LocalDiskManager 启动时,它扫描节点上的所有可用磁盘,收集磁盘的元数据(例如大小、型号、状态等)。
  • 运行中: 持续监控磁盘状态变化,更新磁盘元数据信息,并根据需要调整磁盘的可用性状态。
  • 停止: 在组件停止时,需要确保停止对磁盘的监控,并正确释放资源。

2. LocalStorage

作用: LocalStorage 提供节点级别的存储资源管理。它负责将物理磁盘抽象为可用的存储卷,并执行卷的创建、删除、扩展等操作。

生命周期管理:

  • 启动: 初始化本地存储卷的管理逻辑,确保节点上的物理磁盘可以被正确识别和使用。
  • 运行中: 管理存储卷的生命周期,包括创建、删除、扩展、快照等操作,监控卷的健康状态。
  • 停止: 停止管理存储卷,确保所有资源被安全释放。

3. Scheduler

作用: Scheduler 是一个自定义调度器插件,用于优化工作负载调度到具有特定存储要求的节点上。

生命周期管理:

  • 启动: 注册自定义调度逻辑,将其集成到 Kubernetes 调度流程中。
  • 运行中: 根据工作负载的存储需求和节点的存储资源情况,执行优化调度。
  • 停止: 取消注册自定义调度逻辑,从 Kubernetes 调度器中安全移除。

4. AdmissionController

作用: AdmissionController 在工作负载被提交到 Kubernetes 集群时,对其进行预处理,确保其符合存储策略和要求。

生命周期管理:

  • 启动: 注册到 Kubernetes 的准入控制器链中,准备对即将创建的资源进行预处理。
  • 运行中: 拦截工作负载请求,根据存储策略进行验证和调整。
  • 停止: 从准入控制器链中移除,停止对新请求的拦截和处理。

5. VolumeEvictor

作用: VolumeEvictor 负责在节点维护或失败时,将存储卷从受影响的节点上安全地迁移到其他节点。

生命周期管理:

  • 启动: 初始化卷迁移逻辑,确保在节点发生问题时,卷可以被安全转移。
  • 运行中: 持续监控节点状态和卷的健康状况,执行必要的迁移操作。
  • 停止: 停止监控和迁移操作,确保当前迁移过程安全完成。

6. Exporter

作用: Exporter 收集和导出存储系统的监控指标,供外部监控系统(如 Prometheus)使用。

生命周期管理:

  • 启动: 初始化监控指标的收集和导出逻辑。
  • 运行中: 持续收集系统指标,提供给监控系统进行实时监控和分析。
  • 停止: 停止指标的收集和导出,释放相关资源。

7. Apiserver

作用: Apiserver 提供对 HwameiStor 的管理接口,使用户能够通过 RESTful API 进行操作。

生命周期管理:

  • 启动: 初始化 API 服务,注册可用的接口端点。
  • 运行中: 处理用户请求,执行存储管理操作。
  • 停止: 停止 API 服务,确保当前请求被正确处理完成。

目标

手速StorageClass用hwameistor的方式进行pvc申领动态制备PV

简要步骤

  1. 保证helm存在
  2. 添加 hwameistor-operator Helm Repo
  3. 通过hwameistor-operator部署HwameiStor

@&^%!*&@$实战开始

检查是否有空盘,至于hwameistor是否能再无空盘情况下中断安装后续再尝试

image-20240805105748731

添加源

其实这个步骤是挺简单的,全都是自动创建,所以建议就是最后需要了解一下改csi驱动的特点。比如分布式以及自动搜盘。

helm repo add hwameistor-operator https://hwameistor.io/hwameistor-operator
helm repo update hwameistor-operator

通过hwameistor-operator进行部署HwameiStor

helm install hwameistor-operator hwameistor-operator/hwameistor-operator -n hwameistor --create-namespace

ps:HwameiStor默认会把所有干净的磁盘纳入到LSD的存储池里面,但是也可以预留,通过helm的values来设置

--set diskReserve\[0\].nodeName=node1 \
--set diskReserve\[0\].devices={/dev/sdc\,/dev/sdd} \
--set diskReserve\[1\].nodeName=node2 \
--set diskReserve\[1\].devices={/dev/sdc\,/dev/sde}
# -f diskReserve.yaml
# diskReserve.yaml 如下
diskReserve:
- nodeName: node1
devices:
- /dev/sdc
- /dev/sdd
- nodeName: node2
devices:
- /dev/sdc
- /dev/sde

结束

理论来说,镜像拉取没有问题的话,就基本都可以了,HwameiStor就是这么的nb,可以自己做完所有事情。