调整 PVC 大小的问题:只有动态配置的 PVC 才能调整大小,并且配置 PVC 的存储类必须支持调整大小

问题描述 投票:0回答:2

我正在尝试创建 PVC,稍后可以根据需要调整大小。

我正在使用来自 github 的代码来实现 mongodb pvc

我遵循了所有步骤,PVC 的创建如下:

PS C:\Users> minikube kubectl -- get pvc
NAME         STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mongo-data   Bound     pvc-4a22efc0-9fd3-42dc-80a7-db86e8f2c189   1Gi        RWO            standard       32m

我编辑了文件 mongodb-pvc.yaml 并将存储字段更改为 2 GB。存储:2Gi,然后再次执行 kubectl apply 命令并得到以下错误:

  PS C:\Users> minikube kubectl -- apply -f mongodb-pvc.yaml
    Error from server (Forbidden): error when applying patch:
    {"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"PersistentVolumeClaim\",\"metadata\":{\"annotations\":{},\"name\":\"mongo-data\",\"namespace\":\"default\"},\"spec\":{\"accessModes\":[\"ReadWriteOnce\"],\"resources\":{\"requests\":{\"storage\":\"2Gi\"}}}}\n"}},"spec":{"resources":{"requests":{"storage":"2Gi"}}}}
    to:
    Resource: "/v1, Resource=persistentvolumeclaims", GroupVersionKind: "/v1, Kind=PersistentVolumeClaim"
    Name: "mongo-data", Namespace: "default"
    for: "mongodb-pvc.yaml": persistentvolumeclaims "mongo-data" is forbidden: only dynamically provisioned pvc can be resized and the storageclass that provisions the PVC must support resize

我也尝试使用存储类,但无法正确映射它。

请帮忙,我是 Kubernetes 的初学者,尤其是 PVC 的初学者。

mongodb storage cluster-computing minikube kubernetes-pvc
2个回答
11
投票

为了调整 PVC 的大小,需要在存储类定义中将属性

allowVolumeExpansion
设置为“true”。否则,您将无法执行更新。

您可以按照以下步骤操作并将此属性添加到其 YAML 中:

  1. 在 Kubernetes Engine -> 存储 -> 存储类中,选择您用于 PVC 的存储类。

  2. 转到其 YAML 文件并添加指令。正如以下文档中所解释的:

     allowVolumeExpansion: true
    

修改 YAML 文件后,尝试再次执行 PVC 大小调整


0
投票

我为它写了一个脚本

这应该适用于 minikube 和 k3s

  • 获取存储类名称

  • 启用音量扩展

    query='{.items[?(@.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")].metadata.name}'
    default_sc=$(kubectl get sc -o=jsonpath="$query")
    
    echo patching storage class "[$default_sc]"
    
    kubectl patch storageclass $default_sc -p '{"allowVolumeExpansion": true}'
    
© www.soinside.com 2019 - 2024. All rights reserved.