kuernetes部署local volume provisioner
local-volume-provisioner
这是一个Local StorageClass自动管理工具,大致流程是这样子的:
- 部署一个
local-volume-provisioner
- 设定好可发现目录(discovery directory)
- 管理员可发现目录(discovery directory)挂载了新目录
- provisioner将自动创建好 PV(自动选择合适的名字,路径,nodeAffinity, 容量)
- 这个PV将可以被合适的PVC所使用
- 一旦Pod删除了,PVC也删除也,PV将会被回收,数据将会删除,触发第4步的流程
官方博客有详细的介绍:https://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/ 本文主要参考了Github:https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/helm/README.md#custom-your-deployment-with-values-file
基础环境
|
|
开始部署
|
|
默认情况下,local-volume-provisioner.generated.yaml
这里配置的是ext4
格式,而我的centos使用的是xfs文件格式,这时候需要简单修改一下。
创建一个fast-disks
的StorageClass,local-fast-disks.yaml
:
|
|
|
|
此时,已经部署完毕,先验证一下部署情况
|
|
验证结果
我们刚刚日志查看的是k8s-node1
上的local-volume-provisioner-xkvzv
这个pod,现在前往 k8s=node1挂载一个目录测试一下。
默认的可发现目录(discovery directory)是/mnt/fast-disks
,挂载到这里的目录必须是mount进来,手动创建目录是不会被自动转换为PV的。
此时,我们可以通过mount --bind
来模拟挂载一个磁盘:
|
|
稍等一会,通过kubectl get pv
就可以看到结果了:
|
|
问题排查
错误提示:“fast-disks” not found
|
|
这是由于未创建 fast-disks
这个StorageClass导致的,按上方的local-fast-disks.yaml
进行配置即可。
错误提示:not an actual mountpoint
|
|
这是由于"/mnt/fast-disks/sda"目录未挂载磁盘导致的,通过mount
挂载一个磁盘,或者–bind一个目录即可解决问题。