最近我尝试在 PersistentVolumeClaim 的帮助下调整 Kubectl edit pvc 的大小以将存储从 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

最佳答案

我已经在支持 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 资源,您还可以使用 patch resourceskubectl 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 在答案下方的评论,创建支持 Dynamic Provisioningstorageclass 解决了这个问题。

关于kubernetes - 使用 Kubectl 调整 Kubernetes 中 PVC 的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63965817/

10-12 04:50