目录
- 一、背景
- 二、安装local-path-provisioner
- 1、地址
- 2、更改 local-path-provisioner 使用的默认存储路径
- 3、创建文件并提权
- 4、创建 NameSpace
- 5、应用 local-path-storage
- 6、验证相关资源状态
- 三、设置 local-path 为default SC
- 四、使用 StorageClass 动态制备 PV
- 1、创建PVC
- 2、创建 Pod
- 3、查看 PV
- 五、卸载 local-path
一、背景
更改 PV 的回收策略
-
示例的前提是动态配置PV
-
在 Kubeadm 安装的 Kubernetes 集群环境中,动态供应 PersistentVolumes 需要先安装 Container Storage Interface (CSI) 驱动程序。
二、安装local-path-provisioner
1、地址
GitHub地址
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-storagekubectl 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-pathaccessModes:- ReadWriteOnceresources: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-storagepersistentVolumeClaim:claimName: dynamic-pvc1containers:- name: task-pv-containerimage: nginx:latestports:- containerPort: 80name: "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