簡體   English   中英

如何刪除已安裝的卷? PV/PVC 不會刪除|編輯|補丁

[英]How to remove mounted volumes? PV/PVC won't delete|edit|patch

我在這個基本設置上使用kubectl apply -f pv.yaml

apiVersion: v1
kind: PersistentVolume 
metadata:
  name: pv-demo
spec:
  storageClassName: "normal"
  capacity:
    storage: 1Gi
  persistentVolumeReclaimPolicy: Delete
  accessModes: 
  - ReadWriteOnce
  hostPath:
    path: /home/demo/
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-demo
spec:
  storageClassName: "normal"
  resources:
    requests:
      storage: 200Mi
  accessModes:
  - ReadWriteOnce
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-demo
  labels:
    name: nginx-demo
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: pv-demo
  volumes:
  - name: pv-demo
    persistentVolumeClaim:
      claimName: pvc-demo 

現在我想刪除所有內容,所以我使用了: kubectl delete -f pv.yaml但是,卷仍然存在於 /home/demo 的節點上,必須手動刪除。

所以我嘗試在刪除之前修補和刪除保護:

kubectl patch pv pv-demo -p '{"metadata":{"finalizers":null}}'

但是掛載仍然存在於節點上。 我嘗試手動編輯和 null 終結器,盡管它說“已編輯”; kubectl get pv顯示未修改的終結器。

我不明白發生了什么,為什么以上所有方法都不起作用? 我想在刪除時,節點 /home/demo 上的掛載文件夾也會被刪除。

這是使用hostPath時的預期行為,因為它不支持刪除其他卷類型。 我使用kubeadmgke集群對此進行了測試,並且在刪除pvpvc后,安裝的目錄和文件保持不變。

取自有關回收政策的手冊:

目前,只有 NFS 和 HostPath 支持回收。 AWS EBS、GCE PD、
Azure 磁盤和 Cinder 卷支持刪除。

雖然文檔中提到recycle 自 1.5 版以來已棄用,但它仍然可以工作並且可以清理您的文件,但不會刪除您安裝的目錄。 這並不理想,但這是最接近的解決方法。

重要提示:要成功使用回收,您不能刪除 PV 本身。 如果您刪除 PVC,則 controller 管理器會創建清理卷的回收器 pod,並且此卷可用於綁定到下一個 PVC。

查看 control-manager 日志時,您可以看到host_path deleter拒絕刪除/home/demo/目錄,它只支持刪除/tmp/.+目錄。 但是,經過測試,此tmp也不會被刪除。

'Warning' reason: 'VolumeFailedDelete' host_path deleter only supports /tmp/.+ but received provided /home/demo/```

也許您可以嘗試使用 /tmp/ 下的主機路徑在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM