安装local-path-provisioner基于HostPath动态制备PV
目录
一、背景
-
示例的前提是动态配置PV
-
在 Kubeadm 安装的 Kubernetes 集群环境中,动态供应 PersistentVolumes 需要先安装 Container Storage Interface (CSI) 驱动程序。
二、安装local-path-provisioner
1、地址
git clone git@github.com:rancher/local-path-provisioner.git
2、更改 local-path-provisioner 使用的默认存储路径
sed -i 's|/opt/local-path-provisioner|/mnt/data/local-path-provisioner|' /root/local-path-provisioner/deploy/local-path-storage.yaml
3、创建文件并提权
mkdir -p /mnt/data/local-path-provisioner
chmod 777 /mnt/data/local-path-provisioner
4、创建 NameSpace
kubectl create ns local-path-storage
5、应用 local-path-storage
kubectl apply -f local-path-storage.yaml
6、验证相关资源状态
kubectl get pods -n local-path-storage
kubectl get sc
三、设置 local-path 为default SC
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.beta.kubernetes.io/is-default-class":"true"}}}'
四、使用 StorageClass 动态制备 PV
1、创建PVC
更改 PV 的回收策略 示例中是三个,这里也创建三个,对应修改资源清单里的
metadata.name
cat << EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dynamic-pvc1
spec:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
EOF
2、创建 Pod
对应修改
metadata.name
和spec.volumes.persistentVolumeClaim.claimName
同样的也是创建三个 Pod
cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod1
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: dynamic-pvc1
containers:
- name: task-pv-container
image: nginx:latest
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
EOF
3、查看 PV
可以看到 pv 已经被正常动态创建起来了
kubectl get pv
五、卸载 local-path
kubectl delete -f local-path-storage.yaml