使用Kubectl编辑调整Kubernetes中PVC的尺寸
最近,我尝试在使用Kubectl编辑调整Kubernetes中PVC的尺寸,kubernetes,persistent-volume-claims,Kubernetes,Persistent Volume Claims,最近,我尝试在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 edi
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
的帮助下,如何在没有错误的情况下执行此操作
我已经在我支持的GKE测试集群上验证了这一点。正如我在评论中提到的,您正在尝试编辑
规范
,其中的一部分是不可变的
,除了资源.请求
但是,storage
字段路径是spec.resources.requests.storage
,我对编辑此字段没有任何问题。当您默认使用kubectl edit
时,它使用的是vi编辑器
,该控件可能很难/很容易输入错误。我猜您在示例中意外更改的不仅仅是存储
(可能是选择器
,标签
)中的打字错误)
您始终可以使用另一个编辑器,如nano
。
KUBE\u EDITOR=“nano”kubectl编辑pvc
对于测试,我在GKE集群上使用
$ 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
除了编辑资源,您还可以
kubectl补丁pvc-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
请记住,根据错误消息,它仅适用于绑定声明
如果patch
或edit with nano
对您无效,请提供您的PVC
yaml
编辑
根据OP在回答下面的评论,创建支持此问题的
storageclass
解决了此问题。“…但它给出了错误…”请在帖子中注明错误。另外,请将资源定义包含为文本。请编辑您的问题并添加更多详细信息,如您的环境、您是如何创建此PVC的、您在更改之前是否已解除了其绑定?由于此问题仍处于关闭状态,我将在评论中提供简短回答<PVC
中的code>spec是不可变的
,这意味着您不能在创建后更改此值。在PVC中,您只能更改资源请求<代码>规格在创建**后不可更改,资源除外。绑定声明请求**如果需要更改存储大小,则需要删除此PVC并使用存储创建另一个PVC70Gi@PjoterS它现在是开放的,可能您正在使用动态存储类,因为根据我的搜索和Kubernetes文档,如果存储类是动态的,则只能编辑一个PVC,因此首先我创建了一个动态存储类,然后平滑地编辑了同一个PVC,没有任何错误。@Aftab我使用了GKE,所以我使用了动态资源调配
。对,然后解决了,Hello@Aftab我也在尝试使用PVC创建POD,它使用的是SC。但是当我启动POD时,它在我的本地Virtualbox集群中给出了以下错误。。。你遇到过这样的问题吗?警告FailedScheduling 81s(x2/82s)默认计划程序0/3节点可用:1个节点具有pod无法容忍的污点{node-role.kubernetes.io/master:},2个节点未找到可绑定的可用持久卷。