问题背景

公司最近用K8S,我尝试对MySql做hostPath的目录卷映射

用Helm安装MySql的时候,删除MySql命名空间下面的资源后,想删除PV发现一直删除不了。然后我就找问题。最终!!!

问题原因

我的MySql是装在mysql的命名空间下面,在安装MySql的时候,我只创建了PV资源文件,PV对应的PVC我没有创建,是MySql 自动创建的。

我通过以下命令进行删除: 

# 删除MySql的release实例
helm delete mysql -n mysql

删除成功后,Pod、Service、statefulset... 都会帮我们删除。但是他不会帮我们删除PVC。

因为PVC 通常用于存储数据,而 Helm 删除操作默认不会删除持久化数据,以防止意外数据丢失。

此时我们执行命令查看mysql命名空间下面的PVC

# 查看mysql命名空间下面的PVC
kubectl get pvc -n mysql

NAME           STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
data-mysql-0   Bound    mysql-pv   10Gi       RWO                           3m56s

可以看到他是有值的。

处理

所以我们需要先删除PVC再删除PV

# 删除mysql命名空间下面的PVC
kubectl delete pvc data-mysql-0 -n mysql

# 删除PV
kubectl delete pv mysql-pv

其它暴力方法

直接删除这个PV对应的命名空间,但是这需要你对这个命名空间和PV所依赖的资源足够了解

# 删除命名空间
kubectl delete ns mysql

小补充

PV是不区分命名空间的

PVC是区分命名空间的

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐