每个应用程序部署一个存储类还是为所有应用程序创建一个存储类?

114次阅读
没有评论

问题描述

在使用k8s上的aws-ebs-csi-driver进行持久卷时,遇到了一个场景:可以创建一个ebs存储类,然后在所有statefulsets部署中使用它来创建PersistentVolumeClaims。用户想要权衡这种方法的优缺点,是否应该为每个单独的statefulset创建存储类,还是使用一个存储类来处理所有statefulsets。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据应用程序的需求来决定是否为每个statefulset创建一个存储类,或者使用一个存储类来处理所有statefulsets。以下是一些考虑因素:
– 存储类型:不同的存储类可能具有不同的存储类型,如SSD、HDD等。根据应用程序的需求选择合适的存储类型。
– 存储大小:每个存储类可能有不同的最大存储大小限制。根据应用程序的需求选择合适的存储大小。
– 访问控制:每个存储类可能具有不同的访问控制列表(ACLs)。根据应用程序的需求选择合适的访问控制设置。
– CSI支持:每个存储类可能具有不同的CSI(Container Storage Interface)支持。根据应用程序的需求选择合适的CSI驱动程序。
– 数据复制:每个存储类可能具有不同的数据复制策略。根据应用程序的需求选择合适的数据复制设置。

在选择存储类时,建议查阅AWS文档,了解每个存储类的详细信息,并根据应用程序的需求选择最佳选项。

方案2

请注意以下操作注意版本差异及修改前做好备份。
另一种方法是根据应用程序的需求和存储类的特性来创建多个存储类。这样可以更好地满足不同应用程序的需求,并提供更灵活的存储管理。以下是一些考虑因素:
– 存储需求:不同的应用程序可能具有不同的存储需求,如性能、可靠性等。根据应用程序的需求创建相应的存储类。
– 存储隔离:使用多个存储类可以实现存储的隔离,避免不同应用程序之间的干扰。
– 管理灵活性:使用多个存储类可以更灵活地管理存储资源,根据需要进行调整和扩展。

在创建存储类时,建议根据应用程序的需求和存储管理的灵活性来选择合适的方案。

方案3

请注意以下操作注意版本差异及修改前做好备份。
根据评论中的经验分享,可以根据应用程序的需求和存储类的特性来创建多个存储类。例如,可以为特定的pod使用aws-ebs-csi-driver,同时为一些部分需要共享存储的部分使用fsx.csi.aws.com作为存储类。对于一些较小的环境(如测试环境),可以使用标准的gp2存储类。因此,根据需要选择存储类,并根据应用程序的需求进行更改或添加。

请注意,以上方案仅供参考,最终的决策应基于应用程序的具体需求和存储管理的灵活性。建议在选择存储类之前仔细评估应用程序的需求,并参考AWS文档以获取更多信息。

正文完