我正在尝试创建 PVC,稍后可以根据需要调整大小。
我正在使用来自 github 的代码来实现 mongodb pvc。
我遵循了所有步骤,PVC 的创建如下:
PS C:\Users> minikube kubectl -- get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mongo-data Bound pvc-4a22efc0-9fd3-42dc-80a7-db86e8f2c189 1Gi RWO standard 32m
我编辑了文件 mongodb-pvc.yaml 并将存储字段更改为 2 GB。存储:2Gi,然后再次执行 kubectl apply 命令并得到以下错误:
PS C:\Users> minikube kubectl -- apply -f mongodb-pvc.yaml
Error from server (Forbidden): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"PersistentVolumeClaim\",\"metadata\":{\"annotations\":{},\"name\":\"mongo-data\",\"namespace\":\"default\"},\"spec\":{\"accessModes\":[\"ReadWriteOnce\"],\"resources\":{\"requests\":{\"storage\":\"2Gi\"}}}}\n"}},"spec":{"resources":{"requests":{"storage":"2Gi"}}}}
to:
Resource: "/v1, Resource=persistentvolumeclaims", GroupVersionKind: "/v1, Kind=PersistentVolumeClaim"
Name: "mongo-data", Namespace: "default"
for: "mongodb-pvc.yaml": persistentvolumeclaims "mongo-data" is forbidden: only dynamically provisioned pvc can be resized and the storageclass that provisions the PVC must support resize
我也尝试使用存储类,但无法正确映射它。
请帮忙,我是 Kubernetes 的初学者,尤其是 PVC 的初学者。
为了调整 PVC 的大小,需要在存储类定义中将属性
allowVolumeExpansion
设置为“true”。否则,您将无法执行更新。
您可以按照以下步骤操作并将此属性添加到其 YAML 中:
在 Kubernetes Engine -> 存储 -> 存储类中,选择您用于 PVC 的存储类。
转到其 YAML 文件并添加指令。正如以下文档中所解释的:
allowVolumeExpansion: true
修改 YAML 文件后,尝试再次执行 PVC 大小调整
我为它写了一个脚本
这应该适用于 minikube 和 k3s
获取存储类名称
启用音量扩展
query='{.items[?(@.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")].metadata.name}'
default_sc=$(kubectl get sc -o=jsonpath="$query")
echo patching storage class "[$default_sc]"
kubectl patch storageclass $default_sc -p '{"allowVolumeExpansion": true}'