安装local-path-provisioner基于HostPath动态制备PV

一、背景

更改 PV 的回收策略

  • 示例的前提是动态配置PV

  • 在 Kubeadm 安装的 Kubernetes 集群环境中,动态供应 PersistentVolumes 需要先安装 Container Storage Interface (CSI) 驱动程序。

二、安装local-path-provisioner

1、地址

GitHub地址

git clone [email protected]: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.namespec.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

热门相关:医门宗师   风流医圣   全能千金燃翻天   我向斐少撒个娇   我在镇夜司打开地狱之门