我用stable helm chart部署了cockroachdb。不幸的是,我没有意识到默认的conf给了我一个非常小的1Gi,不可见的持久音量。我也没有意识到cockroachdb使用了相当多的空间来监视自己的时间序列。
现在,我的持久卷已满,我的cockroachdb pod正在崩溃:
log: exiting because of error: log: cannot create log: open /cockroach/cockroach-data/logs/cockroach.ckdb-cockroachdb-0.root.2018-09-09T14_53_47Z.000001.log: no space left on device
我无法调整音量大小:
kubectl patch pvc datadir-ckdb-cockroachdb-0 -p '{"spec":{"resources":{"requests":{"storage":"10Gi"}}}}'
The PersistentVolumeClaim "datadir-ckdb-cockroachdb-0" is invalid: spec: Forbidden: field is immutable after creation
现在我卡住了,因为我无法运行节点来恢复数据。反正有吗?我至少想要检索我的数据。我的服务无论如何都要崩溃了。
第二个问题:如果我想在将来避免这种情况,应该使用什么值来在GKE上动态调整大小的卷?
第三个问题:掌舵图中的默认值应该保持不变吗?
正如https://stackoverflow.com/users/9231144/patrick-w所提到的,在Kubernetes / GKE版本1.11之前,无法自动调整卷的大小。
在此期间,可以通过编辑GCE management console中的磁盘手动调整它们的大小。转到那里,单击要调整大小的磁盘,单击页面顶部附近的“编辑”按钮,以GB为单位键入新的所需磁盘大小,然后单击“保存”。然后,您必须通过SSH连接到相关的pod(例如kubectl exec -it ckdb-cockroachdb-0 bash
)并调整文件系统的大小,以使用resize2fs
等命令来使用新的磁盘容量。
至于你在Helm Chart中更改默认磁盘大小的问题,这是一个公平的问题。但是一个好的默认大小是什么?太低了,这很容易发生。太高,并且它不适用于没有足够大的磁盘以使部署成功的环境。特别是,minikube
使用tmpfs支持的卷,因此它们的大小受到机器内存的限制。至少,实例化图表后输出中的警告似乎是合理的。
磁盘调整大小尚未在1.10上用于gce-pd。
您需要将StorageClass中的“allowVolumeExpansion”值设置为“true”不幸的是,GKE 1.10无法识别此字段并将其保留为。 With the release of 1.11, you should be able to resize PVCs dynamically。
同时,为了不丢失数据,您可以确保将“reclaimPolicy”设置为“retain”,解除PV正在使用的PVC,create a snapshot of the GCE-PD的绑定并创建一个新的更大的磁盘。或者,您可以将GCE-PD挂载到另一个VM实例上以恢复数据。