目录

sig-storage-local-static-provisioner的使用

概述

为了解决 kube-blocks 相关的 ES 依赖本地盘的需求,hostPath 因为不具备调度上的属性,所以需要选择其他方式提供本地盘。另外为了控制存储的使用量(Quota),计划使用 local-static-provisioner 在部署 ES 之前构建好储存空间,这个方案下,结合宿主机的初始化和硬件,存储需要一定的设计。

根据 IDC/运维同学的建议,存储节点会提供一块额外的硬盘数数据盘,挂载到 /data 目录下,下面假设需要该节点会部署3个不同规格的 ES 集群的工作节点,计划是需要通过 LVM 来提前划分空间,之后由 local-static-provisioner 通过磁盘的自动发现为这3个不同规格的 ES 集群工作节点初始化 PV 资源。

1
2
3
4
5
6
7
# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sdb                  8:0    0  1000G  0 disk
└─sdb1               8:3    0  1000G  0 part
  ├─es-1 253:0              0   100G  0 lvm  /data/es-1
  └─es-2 253:1              0   300G  0 lvm  /data/es-2
  └─es-3 253:2              0   600G  0 lvm  /data/es-3

部署

部署方式通过 helm 即可。

1
2
3
helm template --debug local-static-provisioner . --namespace local-static-provisioner --create-namespace > local-volume-provisioner.generated.yaml

helm install -f baremetal.yaml local-static-provisioner --namespace local-static-provisioner ./helm/provisioner

PV/PVC 相关的情况。

1
2
3
4
5
# k get pv
NAME                CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                            STORAGECLASS       AGE
local-pv-36223b0a   100Gi       RWO            Delete           Bound       local-static-provisioner/es-1   local-storage      29h
local-pv-3d32938b   300Gi       RWO            Delete           Bound       local-static-provisioner/es-2   local-storage      29h
local-pv-3d32938c   600Gi       RWO            Delete           Bound       local-static-provisioner/es-3   local-storage      29h

当前问题

如果部署容器版本的 ES,在使用本地盘的时候,一般会遇到下面的问题。

  1. ES集群删除后节点数据如何处理
  2. 机器down之后数据如何处理

那么在使用 sig-storage-local-static-provisioner 的时候,应该怎么解决呢。

参考资料

  1. sig-storage-local-static-provisioner使用
  2. kubernetes部署local volume provisioner
  3. Kubernetes上的持久化存储类型配置