使用 Kubectl 调整 Kubernetes 中 PVC 的大小

Aft*_*tab 3 kubernetes persistent-volume-claims

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

persistentvolumeclaims "myclaim" was not valid:
* spec: Forbidden: spec is iimmutable after creation except resources.requests for bound claims
Run Code Online (Sandbox Code Playgroud)

如何在Kubectl edit.

错误画面

Pjo*_*erS 5

我已经在支持Dynamic Provisioning 的GKE 测试集群上验证了这一点。正如我在评论中提到,你想编辑spec的部分PersistentVolumeClaimimmutable,除了resources.requests

但是,storage字段路径是spec.resources.requests.storage,我对此进行编辑没有任何问题。当您使用kubectl edit默认值时,它使用的vi editor控件可能很难/很容易打错字。我猜你不小心改变了不仅仅是storage在你的例子中(可能是selectors, 中的错字labels)。

您始终可以使用其他编辑器,例如nano. KUBE_EDITOR="nano" kubectl edit pvc <pvc-name>

对于测试,我在 GKE 集群上使用了这个 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
Run Code Online (Sandbox Code Playgroud)

除了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
Run Code Online (Sandbox Code Playgroud)

之后,如果您进行描述,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.
Run Code Online (Sandbox Code Playgroud)

过了一阵子:

$ 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
Run Code Online (Sandbox Code Playgroud)

请记住,根据错误消息,它仅适用于bound claims.

如果patchedit with nano不适合您,请提供您的PVCyaml。

编辑

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