1. 什么是 OpenEBS?

OpenEBS 将可用于 Kubernetes 工作节点的任何存储转换为本地或分布式 Kubernetes 持久化卷(Persistent Volume)。

OpenEBS 帮助应用程序和平台团队轻松地部署 Kubernetes 有状态工作负载,这些工作负载需要快速、高度持久、可靠和可扩展的容器附加存储(Container Attached Storage)。

OpenEBS 也是基于 NVMe 的存储部署的首选。

OpenEBS 最初由 MayaData 构建,后来被捐赠给云原生计算基金会,现在是 CNCF 沙盒项目。


2. 注意

基于 OpenEBS 创建 LocalPV 存储类型仅适用于开发测试环境,不建议在生产环境使用。生产环境建议准备符合 Kubernetes 要求的持久化存储(如 GlusterFS、Ceph、NFS、Neonsan 等分布式存储,或云上的块存储),然后再创建对应的 StorageClass。


3. 先决条件

可以参考以下步骤:

  1. 确认 master 节点是否有 Taint,如下看到 master 节点有 Taint:

  2. 暂时去掉 master 节点的 Taint(待 OpenEBS 安装完成后,再为 master 打上 Taint)


4. 安装 OpenEBS

4.1. 使用 Helm 安装

4.2. 查看创建的 StorageClass

4.3. 将 openebs-hostpath 设置为默认的 StorageClass

4.4. 验证

OpenEBS 的 LocalPV 已作为默认的存储类型。可以通过命令 kubectl get pod -n openebs 来查看 OpenEBS 相关 Pod 的状态,若 Pod 的状态都是 running,则说明存储安装成功。


5. 创建工作负载测试 StorageClass

  1. 创建 demo-openebs-hostpath.yaml,其中定义的 Deployment 与 PVC 用作测试,检验 openebs-hostpath StorageClass 是否创建成功:

  2. 使用 kubectl 创建相关资源:

  3. 如果 PVC 的状态为 Bound 并且 Pod 状态为 running,那么说明已经成功挂载,证明默认 StorageClass(openebs-hostpath)正常工作:

  4. 为 master 节点添加 Taint,避免业务相关的工作负载调度到 master 节点抢占 master 资源:


参考文档