Que signifie l'erreur "cannot delete Pods with local storage"?
Maxime Guilbert
Posted on April 3, 2023
Lors de mises à jour de cluster ou le retrait d'un noeud, il se peut que l'on tombe sur l'erreur "**cannot delete Pods with local storage".
$ kubectl drain node-1 --ignore-daemonsets
...
error: cannot delete Pods with local storage (use --delete-emptydir-data to override):
La solution est simple et est notée dans le log d'erreur. Il suffit d'ajouter l'option --delete-emptydir-data
à votre commande pour que ça fonctionne.
Mais qu'est-ce que cette erreur signifie réellement?
Explication de l'erreur
Cette erreur veut vous signaler que parmis les pods que vous avez sur le noeud que vous souhaitez vider, il y a des pods qui utilisent du stockage local (local storage) comme emptyDir.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- image: busybox
name: busybox
volumeMounts:
- mountPath: /data
name: my-volume
volumes:
- name: my-volume
emptyDir: {}
Utiliser un volume emptyDir est quelque chose qui doit être réfléchie et bien comprise pour éviter de tomber dans cette situation.
En effet un volume emptyDir n'existe que sur le noeud sur lequel se trouve le pod auquel il est rattaché. Contrairement au pod, il ne sera pas transféré sur un nouveau noeud mais devra être supprimé et recréé sur le nouveau noeud. Signifiant alors que toutes les données se trouvant dans le volume étant sur l'ancien noeud devra être supprimé, perdant alors toutes les datas contenues dedans.
C'est vraiment pour ça qu'il faut bien être conscient de ce qu'est un volume emptyDir. Si vous l'utilisez pour stocker le contenu d'une base de données, à la première mise à jour du cluster, vous aurez un problème.
On peut donc en conclure que l'erreur cannot delete Pod with local storage n'est pas réellement une erreur, mais une sorte de "boîte de confirmation" qui va vous prévenir de la présence des volumes locaux avant qu'ils ne soient supprimés.
J'espère que ça vous sera utile! 🍺Lors de mises à jour de cluster ou le retrait d'un noeud, il se peut que l'on tombe sur l'erreur "**cannot delete Pods with local storage".
$ kubectl drain node-1 --ignore-daemonsets
...
error: cannot delete Pods with local storage (use --delete-emptydir-data to override):
La solution est simple et est notée dans le log d'erreur. Il suffit d'ajouter l'option --delete-emptydir-data
à votre commande pour que ça fonctionne.
Mais qu'est-ce que cette erreur signifie réellement?
Explication de l'erreur
Cette erreur veut vous signaler que parmis les pods que vous avez sur le noeud que vous souhaitez vider, il y a des pods qui utilisent du stockage local (local storage) comme emptyDir.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- image: busybox
name: busybox
volumeMounts:
- mountPath: /data
name: my-volume
volumes:
- name: my-volume
emptyDir: {}
Utiliser un volume emptyDir est quelque chose qui doit être réfléchie et bien comprise pour éviter de tomber dans cette situation.
En effet un volume emptyDir n'existe que sur le noeud sur lequel se trouve le pod auquel il est rattaché. Contrairement au pod, il ne sera pas transféré sur un nouveau noeud mais devra être supprimé et recréé sur le nouveau noeud. Signifiant alors que toutes les données se trouvant dans le volume étant sur l'ancien noeud devra être supprimé, perdant alors toutes les datas contenues dedans.
C'est vraiment pour ça qu'il faut bien être conscient de ce qu'est un volume emptyDir. Si vous l'utilisez pour stocker le contenu d'une base de données, à la première mise à jour du cluster, vous aurez un problème.
On peut donc en conclure que l'erreur cannot delete Pod with local storage n'est pas réellement une erreur, mais une sorte de "boîte de confirmation" qui va vous prévenir de la présence des volumes locaux avant qu'ils ne soient supprimés.
J'espère que ça vous sera utile! 🍺
Vous voulez me supporter?
Posted on April 3, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.