如何解决使用Kubectl在Kubernetes中调整PVC大小
最近,我尝试在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
的帮助下,如何做到这一点而没有错误。
解决方法
我已经在支持Dynamic Provisioning的GKE测试群集上对此进行了验证。正如我在评论中提到的那样,您正在尝试编辑spec
的{{3}}的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群集上使用了PersistentVolumeClaim。
$ 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
您也可以This YAML来代替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
字母。
编辑
根据OP在以下答案中的评论,创建支持patch resources的storageclass
解决了此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。