Kubernetes: ne Pouvez pas supprimer PersistentVolumeClaim (pvc)
J'ai créé persistants suivants volume en appelant
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
Après ce que j'ai essayé de supprimer le pvc. Mais cette commande coincé.
lors de l'appel de kubectl describe pvc pv-monitoring-static-content-claim
j'obtiens le résultat suivant
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>
Et pour 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>
Il n'y a pas de gousse de course qui utilise la persistance de volume. Quelqu'un pourrait-il me donner un indice pourquoi le pvc et le pv ne sont pas supprimés?
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe quand persistant volume est protégé. Vous devriez être en mesure de franchir le vérifier:
Commande:
kubectl describe pvc PVC_NAME | grep Finalizers
De sortie:
Finalizers: [kubernetes.io/pvc-protection]
Vous pouvez résoudre ce problème en définissant les finaliseurs à null à l'aide de
kubectl patch
:Ref; L'Objet de stockage dans l'Utilisation de la Protection de
Je ne sais pas pourquoi cela est arrivé, mais après la suppression de la finaliseurs de la pv et le pvc via le kubernetes tableau de bord, les deux ont été supprimés.
C'est arrivé de nouveau après avoir répété les étapes que j'ai décrit dans ma question.
Semble comme un bug.
oc edit pvc/protected-pvc -n myproject
et supprimé ces deux lignes sur les finaliseurs. Les deux PVC et les projets ont disparu immédiatement. Je suis d'accord, c'est probablement un bug car il ne doit pas se comporter de cette façon. Je n'ai pas de gousses cours d'exécution dans ce projet, c'est juste que le PVC.kubectl patch pvc NAME -p '{"metadata":{"finalizers":null}}'
,kubectl patch pod NAME -p '{"metadata":{"finalizers":null}}'
. Source github.com/kubernetes/kubernetes/issues/...Le PV est protégé. Supprimer le PV avant de supprimer le PVC. Aussi, supprimer tous les gousses/déploiements qui sont réclamer de l'Pvc référencés. Pour plus d'informations, n'découvrez L'Objet de stockage dans l'Utilisation de la Protection de
kubectl create -f nameOfTheFileContainingTheFollowingContent.yaml
?Vous pouvez vous débarrasser de l'édition de votre pvc! Supprimer pvc de protection.
Si PV, il peut être parce qu'il a ReclaimPolicy configuré pour Conserver auquel cas il ne sera pas supprimé, même si le PVC est allé. À partir de la documentation:
Recycle
est obsolète maintenantJuste rencontré ce problème il y a quelques heures.
J'ai supprimé les déploiements, qui ont utilisé cette des références et des PV/Pvc sont automatiquement résilié.
Dans mon cas, aussi longtemps que je supprime le pod associées aux deux
pv
etpvc
, lepv
etpvc
de mettre fin à l'état sont allésterminating
état pour toujours, quand il est supprimé. Pour le fixer, j'ai courukubectl patch pv local-pv-324352d9 -n ops -p '{"metadata":{"finalizers": []}}' --type=merge
Ensuite le PV est allé. Merci @Xiak soupçondans mon cas, un pvc n'a pas été supprimé car manque d'espace de noms (j'ai supprimé l'espace de noms avant de supprimer toutes les ressources/pvc)
solution : créer un espace de noms avec le même nom comme il était avant et puis j'ai été en mesure de retirer le
finalizers
et enfin pvc