以前,部署和维护数据库通常意味着许多繁重的杂务和重复的任务,以确保正常运行。然而,在云时代,开发人员和运维工程师开始完全接受自动化工具,这大大简化了他们的工作。在这些工具中,Kubernetes操作符当然是最突出的之一,因为它们经常被用作DBaaS的构建块。
ViewBlock,区块链资源管理器,使用雷竞技下载官网MongoDB的Percona操作符用于存储关键数据。今天,我们将和他们的团队一起看看如何做到这一点pvc-autoresizer可以在Kubernetes上自动扩展MongoDB集群的存储。
推理和目标
没有人喜欢在半夜被磁盘使用警报惊醒,或者更糟的是,由于卷上缺乏空闲空间而导致集群宕机,而卷设置不当,无法向其利益相关者发送适当的警告。
我们的目标是在磁盘达到一定的使用阈值时自动进行存储扩展,同时减少与此相关的警报噪音。特别是对于我们的Operator,复制集节点使用的卷是由它们的Persistent Volume Claims (pvc)定义的,这是我们启用自动伸缩的目标。
让我们去
先决条件
目前支持的pvc-autoresize的Kubernetes版本为1.23 - 1.25。除了您可以通过其Helm图表安装的PVC -autoresize zer之外,Prometheus还需要在您的集群中运行,以提供调整器所需的指标,以确定PVC是否需要缩放。
您的CSI驱动程序需要支持体积膨胀和NodeGetVolumeStats,并且您的pvc使用的存储类也需要体积膨胀要激活的特性。
在我们的实验室中,我们将使用带有标准存储类的AWS EKS。
在行动
你首先需要添加以下注释到你的存储类:
|
1
|
调整
.topolvm
.io/启用=真正的
|
从那时起,您唯一的要求就是正确地注释Operator创建的pvc。
假设一个简单的3节点雷竞技下载官网MongoDB的Percona服务器在当前的命名空间中,您应该能够运行以下命令来允许自动调整所有pvc的存储大小。
|
1
2
3.
4
|
kubectl
注释
聚氯乙烯
--所有
调整
.topolvm
.io/storage_limit=“100”胃肠道
kubectl
注释
聚氯乙烯
--所有
调整
.topolvm
.io/增加=“20 gi”
kubectl
注释
聚氯乙烯
--所有
调整
.topolvm
.io/阈值=“20%”
kubectl
注释
聚氯乙烯
--所有
调整
.topolvm
.io/启用=“真正的”
|
为了描述这个特定的配置,它告诉pvc-autoresize zer,当pvc上只剩下20%的空间时,它们应该增加20Gi,最大大小为100Gi,超过这个值它们就不会自动增加。
请注意如果你使用本月发布的Operator 1.14.0版本,可以直接从CR配置文件注释pvc,例如:
|
1
2
3.
4
5
6
7
8
9
10
|
规范
:
replset
:
-
名字
:
rs0
volumeSpec
:
persistentVolumeClaim
:
注释
:
调整
.topolvm
.io/storage_limit
:
100年胃肠道
调整
.topolvm
.io/增加
:
20胃肠道
调整
.topolvm
.io/阈值
:
20.
%
调整
.topolvm
.io/启用
:
“真正的”
|
限制
手动降尺度
可以自动增加存储空间,但减少存储空间则需要手动操作,需要完全替换卷。例如,AWS EBS卷不能缩小大小,您需要删除卷,然后才能创建大小更小的新卷。在在Kubernetes上更改存储类,我们描述了如何动态地更改存储类-类似的过程将应用于减少卷的大小。
阈值百分比
由于我们的增加阈值是用百分比指定的,因此调整大小时可用的空间将固有地随着卷的大小而增长。在处理“大”磁盘(比如1TB)时,建议设置一个较低的阈值,以避免在仍然有大量可用空间时触发重新缩放。
扩展配额
云提供商(例如AWS)对卷有扩展配额。对于EBS,您可以每六个小时调整一次卷的大小。如果您的数据摄入大于您设置的增加量,并且在小于该时间内发生,则调整大小将失败。必须考虑您的摄取速率和磁盘增长,以便您可以设置适当的自动调整器配置,以满足您的需求。如果不这样做,可能会导致不必要的警报,并需要将数据传输到新的pvc,您可以在雷竞技下载官网Percona操作员无停机量扩展。
状态集和自定义资源同步
当您提供新节点或重新创建一个节点时,它们的PVC将使用它从集群初始化时创建的不可变StatefulSet中获得的卷请求进行引导,而不是使用它的最新大小。您需要为这些新的pvc设置适当的注释,以确保pvc-autoresize能够对它们进行足够的扩展,以允许复制有足够的空间进行,并且不需要扩展超过云提供商允许的范围。通常建议确保StatefulSets和Custom Resources中的存储规格与实际卷同步。
结论
现在,您已经有了一个用于MongoDB配置的Per雷竞技下载官网cona Operator,它可以根据您的需要自动扩展存储!
仍然建议至少设置一个最小的警报设置,以防您接近注释中指定的存储限制,因为pvc-autoresize需要设置它。
ViewBlock是一个区块链不可知论的资源管理器,允许任何人检查区块,交易,地址历史,高级统计信息等。
雷竞技下载官网MongoDB的Percona操作符在Kubernetes上自动部署和管理副本集和分片集群。






