webentwicklung-frage-antwort-db.com.de

Kubernetes: PersistentVolumeClaim (pvc) kann nicht gelöscht werden

Ich habe das folgende dauerhafte Volume durch Aufrufen erstellt

kubectl create -f nameOfTheFileContainingTheFollowingContent.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-monitoring-static-content
spec:
  capacity:
    storage: 100Mi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/some/path"

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-monitoring-static-content-claim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ""
  resources:
    requests:
      storage: 100Mi

Danach habe ich versucht, das PVC zu löschen. Aber dieser Befehl blieb hängen. Wenn ich kubectl describe pvc pv-monitoring-static-content-claim anrufe, erhalte ich folgendes Ergebnis 

Name:          pv-monitoring-static-content-claim
Namespace:     default
StorageClass:
Status:        Terminating (lasts 5m)
Volume:        pv-monitoring-static-content
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed=yes
               pv.kubernetes.io/bound-by-controller=yes
Finalizers:    [foregroundDeletion]
Capacity:      100Mi
Access Modes:  RWO
Events:        <none>

Und für kubectl describe pv pv-monitoring-static-content

Name:            pv-monitoring-static-content
Labels:          <none>
Annotations:     pv.kubernetes.io/bound-by-controller=yes
Finalizers:      [kubernetes.io/pv-protection foregroundDeletion]
StorageClass:
Status:          Terminating (lasts 16m)
Claim:           default/pv-monitoring-static-content-claim
Reclaim Policy:  Retain
Access Modes:    RWO
Capacity:        100Mi
Node Affinity:   <none>
Message:
Source:
    Type:          HostPath (bare Host directory volume)
    Path:          /some/path
    HostPathType:
Events:            <none>

Es wird kein Pod ausgeführt, der das permanente Volume verwendet. Könnte mir jemand einen Hinweis geben, warum der Pvc und der Pv nicht gelöscht werden?

9
Yannic Klem

Ich bin nicht sicher, warum dies passiert ist, aber nachdem ich die Finalizer des pv und des pvc über das kubernetes-Dashboard gelöscht hatte, wurden beide gelöscht .. Diese wurden wiederholt, nachdem ich die in meiner Frage beschriebenen Schritte wiederholt hatte ein Käfer.

9
Yannic Klem

Dies geschieht, wenn das beständige Volume geschützt ist. Sie sollten in der Lage sein, dies zu überprüfen:

Befehl:

kubectl describe pvc PVC_NAME | grep Finalizers

Ausgabe:

Finalizers: [kubernetes.io/pvc-protection]

Sie können dies beheben, indem Sie die Finalizer mit kubectl patch Auf null setzen:

kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge

Ref; Schutz für in Gebrauch befindliche Speicherobjekte

18
Xiak

Sie können die Bearbeitung Ihres PVC loswerden! Entfernen Sie den PVC-Schutz.

  1. kubectl edit pvc YOUR_PVC -n NAME_SPACE
  2. Manuelles Bearbeiten und Setzen von # vor diese Zeile enter image description here
  3. Alle pv und pvc werden gelöscht
6
Ali Atakan

In meinem Fall, solange ich den Pod lösche, der sowohl pv als auch pvc zugeordnet ist, sind die pv und pvc im Beendigungsstatus verschwunden

3
j3ffyang

Wenn PV noch vorhanden ist, kann dies daran liegen, dass ReclaimPolicy auf Retain gesetzt ist. In diesem Fall wird PV nicht gelöscht, auch wenn PVC nicht mehr vorhanden ist. Aus den Dokumenten:

PersistentVolumes kann verschiedene Rückforderungsrichtlinien enthalten, einschließlich “Behalten”, “Recycling” und “Löschen”. Für dynamisch bereitgestellte PersistentVolumes ist die Standard-Rückforderungsrichtlinie "Löschen". Das heisst dass ein dynamisch bereitgestellter Datenträger automatisch gelöscht wird, wenn ein Benutzer löscht den entsprechenden PersistentVolumeClaim. Diese automatische Verhalten kann unangemessen sein, wenn der Datenträger wertvolle Daten enthält . In diesem Fall ist es sinnvoller, die "Retain" -Politik zu verwenden. Mit die "Retain" -Richtlinie, wenn ein Benutzer einen PersistentVolumeClaim löscht, der entsprechendes PersistentVolume wird nicht gelöscht. Stattdessen wird es verschoben in die freigegebene Phase, in der alle Daten manuell wiederhergestellt werden können

2

Die PV ist geschützt. Löschen Sie die PV, bevor Sie das PVC löschen. Löschen Sie außerdem alle Pods/Implementierungen, die beanspruchte PVCs beanspruchen. Weitere Informationen finden Sie unter Speicherobjekt im Nutzungsschutz

1

Ich habe diese Ausgabe gerade vor Stunden getroffen.

Ich habe Bereitstellungen gelöscht, die diese Referenzen verwendet haben, und die PV/PVCs werden automatisch beendet.

0
akai