最近,我尝试在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
1条答案
按热度按时间tpgth1q71#
我已经在支持Dynamic Provisioning的GKE测试集群上验证了这一点。正如我在评论中提到的,您正在尝试编辑PersistentVolumeClaim的
spec
部分,即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集群上使用了This YAML。
除了
editing
资源,您也可以修补资源。kubectl patch pvc <pvc-name> -p '{"spec":{"resources":{"requests":{"storage":"70Gi"}}}}'
之后,如果您要描述
PVC
,您可以找到如下信息:过了一会儿:
请记住,根据错误消息,它只适用于
bound claims
。如果
patch
或edit with nano
不适合您,请提供您的PVC
yaml。编辑
根据OP在以下回答中的评论,创建支持动态预配置的
storageclass
解决了此问题。