我继承了一个基于terraform/helm的GKE,在生产环境中有一组部署和服务。它们都使用默认存储类作为 PVC。
我想切换到更强大的存储方式(默认保留甚至文件存储+ NFS)。我想知道是否有办法将存储类切换到较新的存储类,而不会丢失或手动从最旧的默认卷中移动内容。这最终使用地形并更新 Helm 图表以保持一致性。
有没有办法这样做?
您不能将StorageClass
更改为其他,并且希望数据不会丢失。
将您的StorageClass
视为告诉 Kubernetes 可以使用哪些存储选项的一种方式。您可以拥有NFS
存储和Ceph
存储。更改存储数据的PVC
的StorageClass
不会将数据传输到新位置。
您甚至无法更改已创建的StorageClasses
和PVC's
中的大多数参数。
您可以通过以下链接阅读有关它的更多信息:
- Kubernetes.io:存储类
- Cloud.google.com:Kubernetes Engine:如何:持久卷:ssd-pd
- Stackoverflow.com:如何更改现有持久卷的存储类型?
- Cloud.google.com:计算:磁盘:创建快照- 用于磁盘备份
我想知道是否有办法在不丢失存储类的情况下将存储类切换到较新的存储类(我假设的数据)
如前所述,不可能只是将StorageClass
更改为不同的。
或手动从最早的默认宗卷中移动内容。
是的,这是可能的,有几种方法可以做到这一点。我们不知道您面临的确切情况(您拥有哪些确切资源,数据,部署方式等)。
请查看以下资源:
- Medium.com:迁移 Kubernetes 卷数据- 您可以使用本指南挂载旧卷和新卷(文件存储 PVC?),以将旧卷的内容复制到新卷。
- Cloud.google.com:文件存储:访问文件共享- 这是从文件存储创建 PVC 的指南。
- Velero.io
您可以使用上面的示例在PVC's
之间复制文件,以创建一个将自动执行此操作的Job
。
这最终使用地形并更新掌舵图以保持一致性。
如果您打算创建支持您配置的新存储的资源,这是可能的。您将需要修改现有资源/创建新资源以支持新存储。请确保在生产中使用解决方案之前对其进行了测试。