Que signifie l'erreur "cannot delete Pods with local storage"?
Tags: kubernetes, devops, sre
Published: 2023-04-03 15:26:00

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".

```bash
$ 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**.

```yaml
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".

```bash
$ 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**.

```yaml
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! 🍺

---

<center><h3>Vous voulez me supporter?</h3></center>
<a href="https://www.buymeacoffee.com/mxguilbert7" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>