EKS集群gp3存储类参数修改对PV及StatefulSet的影响
问题背景
我们的Kubernetes集群(EKS)中,gp3存储类是默认存储类,但关联PV的EBS卷使用默认IOPS值,我们希望调高该值。使用的Kubernetes版本为1.21。
原Terraform存储类代码:
resource "kubernetes_storage_class" "aws-ebs-csi-gp3-storage-class" { metadata { name = "aws-ebs-csi-gp3" annotations = { "storageclass.kubernetes.io/is-default-class" = "true" } } storage_provisioner = "ebs.csi.aws.com" reclaim_policy = "Delete" allow_volume_expansion = true volume_binding_mode = "Immediate" }
计划修改后的Terraform代码:
resource "kubernetes_storage_class" "aws-ebs-csi-gp3-storage-class" { metadata { name = "aws-ebs-csi-gp3" annotations = { "storageclass.kubernetes.io/is-default-class" = "true" } } storage_provisioner = "ebs.csi.aws.com" reclaim_policy = "Delete" allow_volume_expansion = true volume_binding_mode = "Immediate" parameters = { type: gp3 iopsPerGB: "10" } }
请问:
- 该修改会影响所有关联此存储类的PV吗?
- 是否会重建这些PV?
- 对使用这些PV的StatefulSet有何影响?
回答
- 对现有关联PV的影响:不会影响已创建的PV。StorageClass的参数修改仅对新创建的PV生效,PV一旦创建,其关联的EBS卷属性(包括IOPS)会固化在AWS侧,Kubernetes不会自动修改已有PV对应的EBS卷配置。
- 是否会重建PV:不会重建现有PV。Terraform修改StorageClass时,仅更新StorageClass自身的资源对象,不会触发已有PV的删除或重建操作。只有手动删除PV并让PVC重新触发动态配置时,才会使用新的StorageClass参数创建新PV。
- 对StatefulSet的影响:
- 已有的StatefulSet Pod挂载的是旧PV对应的EBS卷,IOPS不会变化,业务无影响。
- 若StatefulSet扩容新Pod,新Pod对应的PVC会使用修改后的StorageClass参数创建新PV,新EBS卷会应用
iopsPerGB=10的配置。 - 若要让现有StatefulSet Pod使用更高IOPS的卷,需手动替换PV:先备份数据后删除旧PV,再删除对应Pod,StatefulSet会重新创建Pod并触发PVC绑定符合新参数的PV;也可直接在AWS控制台修改现有EBS卷的IOPS值,再同步更新PV的对应属性(此方式需手动操作)。
内容的提问来源于stack exchange,提问作者Ionut Donca
相关产品推荐
相关产品推荐

