最近,我尝试在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的帮助下,我如何在不出错的情况下做到这一点。
发布于 2020-09-25 06:54:52
我已经在支持动态供给的GKE测试集群上验证了这一点。正如我在注释中提到的,您正在尝试编辑PersistentVolumeClaim的PersistentVolumeClaim的immutable部分,但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而不是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唤醒。
如果patch或edit with nano不适合您,请提供您的PVC yaml。
编辑
根据OP下面的评论,创建支持storageclass的动态供给解决了这个问题。
https://stackoverflow.com/questions/63965817
复制相似问题