如何解决EBS 卷的持久卷中的 Mysql 数据在 Pod 重新创建时被删除
我有一个 EKS 集群,其中包含以下文件。
1)mysql部署文件 2)PVC索赔文件 3)存储类文件
当我运行所有三个文件时,会动态创建 ebs 卷。然后我在 mysql 表中创建一个条目并尝试删除并重新创建 pod。
现在 ebs 卷中的所有内容都被删除并且没有数据。
我试图弄清楚如何在 pod 或部署被删除并重新启动时使数据持久化。
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
application: mysql
replicas: 1
template:
metadata:
labels:
application: mysql
spec:
containers:
- name: mysql
image: vjk94/data-admin2:version2
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-data
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql-data
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-data
spec:
storageClassName: ebs-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: ebs-sc
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
fsType: ext4
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
- debug
volumeBindingMode: WaitForFirstConsumer
解决方法
PVC 的生命周期与 Pod 无关。 PV 仍然存在,因为它已将 ReclaimPolicy 设置为 Retain,在这种情况下,即使 PVC 消失,它也不会被删除,但是当您再次启动 Pod 时,新的 PV 和 PVC 已创建,这就是您看到空的原因- 使用回收策略 Retain 当 PersistentVolumeClaim 被删除时,PersistentVolume 仍然存在并且该卷被视为“已释放”。但它尚不可用于其他索赔,因为前一个索赔人的数据仍保留在卷上。请参阅:pv-reclaim-policy-retain。 但是:
管理员可以通过以下方式手动回收卷 步骤。
- 删除 PersistentVolume。外部基础设施(例如 AWS EBS、GCE PD、Azure 磁盘或 删除 PV 后 Cinder 卷)仍然存在。
- 相应地手动清理相关存储资产上的数据。
- 手动删除关联的存储资产,或者如果您想重复使用相同的存储资产,请创建一个新的 PersistentVolume 存储资产定义。
阅读更多:pv-reclaim-policy-example、pv-reclaim-policy-retain-example、retain-reclaim-policy-fetch-data。
编辑:
如果您将在部署中添加 subpath: mysql 参数,一切都会正常工作。即使您删除部署并重新启动,数据也会保留。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。