安裝local-path-provisioner基於HostPath動態製備PV

misakivv發表於2024-08-12

目錄
  • 一、背景
  • 二、安裝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

image-20240812150230619

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

image-20240812151055433

3、建立檔案並提權

mkdir -p /mnt/data/local-path-provisioner
chmod 777 /mnt/data/local-path-provisioner

image-20240812151302807

4、建立 NameSpace

kubectl create ns local-path-storage

image-20240812151706932

5、應用 local-path-storage

kubectl apply -f local-path-storage.yaml

image-20240812151824277

6、驗證相關資源狀態

kubectl get pods -n local-path-storage

kubectl get sc

image-20240812152324590

三、設定 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"}}}'

image-20240812152611957

四、使用 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

image-20240812154630598

五、解除安裝 local-path

kubectl delete -f local-path-storage.yaml

image-20240812155343786

相關文章