在Kubernetes中使用Kubectl调整PVC大小编辑

siotufzp  于 2022-12-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(452)

最近,我尝试在Kubectl edit pvc的帮助下调整PersistentVolumeClaim的大小,以将存储空间从10 Gi增加到70 Gi,但它给出了错误:

persistentvolumeclaims "myclaim" was not valid:
* spec: Forbidden: spec is iimmutable after creation except resources.requests for bound claims

我怎样才能在Kubectl edit的帮助下做到这一点而不出错呢?
Screen of error

tpgth1q7

tpgth1q71#

我已经在支持Dynamic Provisioning的GKE测试集群上验证了这一点。正如我在评论中提到的,您正在尝试编辑PersistentVolumeClaimspec部分,即immutable,除了resources.requests
然而,storage字段路径是spec.resources.requests.storage,我没有任何编辑这个的问题。当你使用kubectl edit作为默认值时,它使用的是vi editor,这可能是很难控制/很容易打字错误。我猜你不小心改变了你的例子中不仅仅是storage(可能是在selectorslabels中的打字错误)。
您可以随时使用另一个编辑器,例如nanoKUBE_EDITOR="nano" kubectl edit pvc <pvc-name>
对于测试,我在GKE集群上使用了This YAML

$ kubectl get pvc
NAME               STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mongodb-pv-claim   Bound    pvc-802714bf-3922-4b41-b70f-97394f252a00   10Gi       RWO            standard       16s

除了editing资源,您也可以修补资源。
kubectl patch pvc <pvc-name> -p '{"spec":{"resources":{"requests":{"storage":"70Gi"}}}}'

$ kubectl patch pvc mongodb-pv-claim -p '{"spec":{"resources":{"requests":{"storage":"70Gi"}}}}}'
persistentvolumeclaim/mongodb-pv-claim patched

之后,如果您要描述PVC,您可以找到如下信息:

Conditions:
  Type                      Status  LastProbeTime                     LastTransitionTime                Reason  Message
  ----                      ------  -----------------                 ------------------                ------  -------
  FileSystemResizePending   True    Mon, 01 Jan 0001 00:00:00 +0000   Fri, 25 Sep 2020 06:40:17 +0000           Waiting for user to (re-)start a pod to finish
 file system resize of volume on node.

过了一会儿:

$ kubectl get pvc
NAME               STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mongodb-pv-claim   Bound    pvc-802714bf-3922-4b41-b70f-97394f252a00   70Gi       RWO            standard       8m37s

请记住,根据错误消息,它只适用于bound claims
如果patchedit with nano不适合您,请提供您的PVC yaml。

编辑

根据OP在以下回答中的评论,创建支持动态预配置的storageclass解决了此问题。

相关问题