缩小Kubernetes持久化卷

3

我有多个持久卷需要缩小以减少托管成本。我已经知道 Kubernetes 没有提供这样的选项。我也尝试过从快照克隆或还原到一个更小的新卷,但结果相同(请求的卷大小XXX小于源快照的大小XXX)。

尽管如此,我仍然需要一种解决方案或变通方法来完成此操作。

该集群使用 Rancher 部署,并将卷挂载到 Ceph 集群。所有内容都由外部主机商提供。

2个回答

3

最终,我通过以下步骤实现了所需的目标(仍然需要一些棘手和手动的工作):

  • 停止运行pod(否则您将无法在下一步中使用卷)
  • 创建一个新的PVC,具有所需的容量(确保规范和标签与现有PVC匹配)
  • 运行此作业 https://github.com/edseymour/pvc-transfer
    • job-template.yaml的规范中设置源和目标卷
  • 将新创建的pv的ReclaimPolicy设置为Retain。这将确保在我们在下一步中删除临时pvc之后,pv不会被删除
  • 删除源和目标pvc
  • 创建一个新的pvc,名称与旧的相同,但存储容量更大
  • 在新的pv上将claimRef指向新的pvc

0

这有点棘手,但我会尝试手动创建适当大小的卷,并用来自较大卷的数据填充它们,然后重新部署,使应用程序连接到新卷。

我知道答案相当通用,但如何操作将取决于您拥有的基础架构的能力和访问权限。

我不熟悉基于 Ceph 的卷,但如果您能够在 Ceph 中创建新卷,在 Ceph 中直接从较大卷复制到新卷,然后手动创建 PV,但配置为使用较小的卷(因此在创建 PV 时不会提供 Ceph 存储),那可能是最简单的选择。


我没有直接访问 Ceph 后端的权限。但总的来说,你的方法对我来说似乎是合理的。但我还有一个问题: 如果没有那个选项,我猜我需要使用 kubctl cp 来完成这样的任务。或者还有其他选项可以获取和复制数据到新卷吗? - Philipp Hölscher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接