zl程序教程

您现在的位置是:首页 >  其他

当前栏目

AWS EKS 如何调整 Persistent Volumes (EBS)大小

AWS 如何 大小 调整 EBS persistent
2023-09-14 09:08:37 时间

在AWS EKS群集上,在编写本文时,默认情况下,无法调整使用默认gp2 StorageClass配置的卷的大小。这是因为在默认StorageClass上,allowVolumeExpansion设置为false,从而阻止卷扩展:

$ kubectl get sc
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  78d

为了解决这个问题,我们可以检查默认定义中的allowVolumeExpansion设置是否存在:

$ kubectl get sc gp2 -o yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  (...)
  name: gp2
parameters:
  fsType: ext4
  type: gp2
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

为了能够修改此StorageClass,我们可以使用kubectl patch命令,如下所示:

$ kubectl patch sc gp2 -p '{"allowVolumeExpansion": true}'
storageclass.storage.k8s.io/gp2 patched

此设置将告诉Kubernetes CSI可以调整基础卷(EBS volume)的大小。使用kubectl get sc,我们可以看到ALLOWVOLUMEEXPANSION更改为true:

$ kubectl get sc 
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   true                   78d

我们可以使用kubectl get pv查看卷的当前大小,或者通过使用df简单地检查pod上的卷大小:

$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                          STORAGECLASS   REASON   AGE
pvc-a1448f38-5f28-492e-a09c-8a900b9fb43e   35Gi       RWO            Delete           Bound    pet2cattle/pet2cattle-static   gp2                     9d6h
$ kubectl exec -it pet2cattle-79979695b-7rmg6 -- df -hP
Filesystem      Size  Used Avail Use% Mounted on
overlay          20G   11G  9.5G  53% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/xvda1       20G   11G  9.5G  53% /tmp
shm              64M     0   64M   0% /dev/shm
/dev/xvdbg       35G  1.3G   34G   4% /opt/pet2cattle/static
tmpfs           3.9G   12K  3.9G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs           3.9G     0  3.9G   0% /proc/acpi
tmpfs           3.9G     0  3.9G   0% /proc/scsi
tmpfs           3.9G     0  3.9G   0% /sys/firmware

请记住,在容器上识别带有linux挂载的VolumeMounts可能是一项复杂的任务。
最后,要调整卷的大小,我们可以将存储属性更改为要调整其大小的新大小:

$ kubectl get pvc pet2cattle-data -o yaml | sed 's/storage: 35Gi/storage: 40Gi/g' | kubectl apply -f -
persistentvolumeclaim/pet2cattle-data configured

CSI可能需要一段时间来进行更改,但最终我们将能够看到卷的大小被修改
请注意AWS eks 修改 storage 大小,每6小时可以修改一次,不可以频繁修改

$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                          STORAGECLASS   REASON   AGE
pvc-a1448f38-5f28-492e-a09c-8a900b9fb43e   40Gi       RWO            Delete           Bound    pet2cattle/pet2cattle-static   gp2                     9d6h
$ kubectl exec -it pet2cattle-79979695b-7rmg6 -- df -hP
Filesystem      Size  Used Avail Use% Mounted on
overlay          20G   11G  9.5G  53% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/xvda1       20G   11G  9.5G  53% /tmp
shm              64M     0   64M   0% /dev/shm
/dev/xvdbg       40G  1.3G   38G   4% /opt/pet2cattle/static
tmpfs           3.9G   12K  3.9G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs           3.9G     0  3.9G   0% /proc/acpi
tmpfs           3.9G     0  3.9G   0% /proc/scsi
tmpfs           3.9G     0  3.9G   0% /sys/firmware