下载地址
https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/archive/refs/tags/v2.4.0.tar.gz
安装helm
curl -OL https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz
tar -xf helm-v3.6.3-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
#可不用以下
####helm repo add stable https://charts.helm.sh/stable
####helm repo list
解压
tar -xf sig-provisioner-xxx.tar.gz
创建storage class
注意一下storageclass的名字
kubectl apply -f deployment/kubernetes/example/default_example_storageclass.yaml
创建provisioner
参考官方文档:
因本次环境helm version >= v3.0.0:
git clone --depth=1 https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner.git
helm template -f <path-to-your-values-file> <release-name> --namespace <namespace> ./helm/provisioner > local-volume-provisioner.generated.yaml
edit local-volume-provisioner.generated.yaml if necessary
kubectl create -f local-volume-provisioner.generated.yaml
所以生成provisioner.yaml文件的命令为:
helm template -f helm/provisioner/values.yaml lvm-storage --namespace kube-system ./helm/provisioner > local-volume-provisioner.generated.yaml
kubectl create -f local-volume-provisioner.generated.yaml
注意:
# vim helm/provisioner/values.yaml
classes:
- name: fast-disks # Defines name of storage classe. 这是storage class的名字,接下来创建storage class是必须与这里的名字一致,默认都是fast-disks
hostDir: /mnt/fast-disks
local-volume-provisioner镜像下载不下来,需要修改一下:
googleimages/local-volume-provisioner:v2.4.0
挂载目录
因上面配置的挂载目录为/mnt/fast-disks,因此需要在/mnt/fast-disks创建一个目录,比如pv1,然后将/dev/vg1/k8s-volume挂载到/mnt/fast-disks/pv1,/mnt/fast-disks目录下的每一个挂载点都会自动生成为一个pv,挂载之后使用kubectl get pv查看
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
local-pv-27c6ca2f 9951Mi RWO Delete Available fast-disks 2d16h
只有一块盘时可模拟多个挂载点
#!/bin/bash
for i in $(seq 1 5); do
mkdir -p /mnt/fast-disks-bind/vol${i}
mkdir -p /mnt/fast-disks/vol${i}
mount --bind /mnt/fast-disks-bind/vol${i} /mnt/fast-disks/vol${i}
done
使用
创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: lvm-chaim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: fast-disks
创建pod
kind: Pod
apiVersion: v1
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/data"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: lvm-chaim
参考链接:
https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/helm/README.md
https://blog.csdn.net/networken/article/details/106412691
https://developer.aliyun.com/article/692619