概述
为了解决 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,在使用本地盘的时候,一般会遇到下面的问题。
- ES集群删除后节点数据如何处理
- 机器down之后数据如何处理
那么在使用 sig-storage-local-static-provisioner 的时候,应该怎么解决呢。
参考资料
- sig-storage-local-static-provisioner使用
- kubernetes部署local volume provisioner
- Kubernetes上的持久化存储类型配置