在不丢失内容的情况下更改 GKE 存储 class

Change GKE storage class without losing content

我继承了一个基于 terraform/helm 的 GKE,在生产环境中有一组部署和服务。它们都使用默认存储 class 作为 PVC。

我想切换到更健壮的存储方式(默认保留甚至 Filestore+NFS)。我想知道是否有一种方法可以将存储 class 切换到较新的存储 而不会丢失 或手动从最旧的默认卷中移动内容。这最终使用 terraform 并更新 Helm 图表以保持一致性。

有办法吗?

您不能将您的 StorageClass 更改为另一个并期望数据不会丢失。

将您的 StorageClass 视为一种告诉 Kubernetes 可用存储选项的方式。您可以有一个 NFS 存储空间和 Ceph 存储空间。为存储数据的 PVC 更改 StorageClass 不会将数据传输到新位置。

您甚至无法更改已创建的 StorageClassesPVC's 中的大部分参数。

您可以通过以下链接了解更多信息:


I was wondering if there is a way to switch the storage class to the newer ones without loosing (the data I assume)

如前所述,不可能只将 StorageClass 更改为另一个。

or manually move the content from the oldest default volumes.

是的,这是可能的,有多种方法可以做到。我们不知道您面临的确切情况(您拥有哪些确切资源、其中的数据、它们的部署方式等)。

请查看以下资源:

您可以使用上面的示例在 PVC's 之间复制文件来创建一个 Job,它将自动执行。

This eventually using terraform and updating the helm charts for consistency.

如果您打算创建支持您配置的新存储的资源,这是可能的。您将需要修改现有 resources/create 新资源以支持新存储。请确保您在将解决方案用于生产之前对其进行了测试。