helm cockroachdb GKE - 体积已满且不可调整大小
helm cockroachdb GKE - volume full and un-resizable
我已经使用 stable helm chart 部署了 cockroachdb。
不幸的是,我没有意识到默认的 conf 给我一个非常小的 1Gi,不可调整大小的持久卷。
我也没有意识到 cockroachdb 使用了很多 space 来监控自己的时间序列。
现在,我的持久卷已满,我的 cockroachdb pods 正在崩溃:
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 上动态调整大小的卷?
第三个问题:helm chart 中的默认值真的应该保持这样吗?
磁盘大小调整尚不适用于 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",解绑 PVC,create a snapshot of the GCE-PD PV 正在使用并创建一个新的更大的磁盘。或者您可以将 GCE-PD 挂载到另一个 VM 实例上以恢复数据。
如 https://whosebug.com/users/9231144/patrick-w 所述,在 Kubernetes/GKE 版本 1.11 之前无法自动调整卷的大小。
同时,可以通过编辑 GCE management console 中的磁盘来手动调整它们的大小。转到那里,单击要调整大小的磁盘,单击页面顶部附近的编辑按钮,以 GB 为单位输入新的所需磁盘大小,然后单击 "Save"。然后,您必须通过 SSH 连接到相关的 pods(例如 kubectl exec -it ckdb-cockroachdb-0 bash
)并使用 resize2fs
.
之类的命令调整文件系统的大小以使用新的磁盘容量
至于您关于在 Helm Chart 中更改默认磁盘大小的问题,这是一个公平的问题。但是一个好的默认大小是多少?太低了,很容易出现这种情况。太高了,它在没有足够大磁盘的环境中无法成功部署。特别是,minikube
使用 tmpfs 支持的卷,因此它们的大小受到机器内存的很大限制。至少,在实例化图表后在输出中发出警告似乎是有道理的。
我已经使用 stable helm chart 部署了 cockroachdb。 不幸的是,我没有意识到默认的 conf 给我一个非常小的 1Gi,不可调整大小的持久卷。 我也没有意识到 cockroachdb 使用了很多 space 来监控自己的时间序列。
现在,我的持久卷已满,我的 cockroachdb pods 正在崩溃:
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 上动态调整大小的卷?
第三个问题:helm chart 中的默认值真的应该保持这样吗?
磁盘大小调整尚不适用于 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",解绑 PVC,create a snapshot of the GCE-PD PV 正在使用并创建一个新的更大的磁盘。或者您可以将 GCE-PD 挂载到另一个 VM 实例上以恢复数据。
如 https://whosebug.com/users/9231144/patrick-w 所述,在 Kubernetes/GKE 版本 1.11 之前无法自动调整卷的大小。
同时,可以通过编辑 GCE management console 中的磁盘来手动调整它们的大小。转到那里,单击要调整大小的磁盘,单击页面顶部附近的编辑按钮,以 GB 为单位输入新的所需磁盘大小,然后单击 "Save"。然后,您必须通过 SSH 连接到相关的 pods(例如 kubectl exec -it ckdb-cockroachdb-0 bash
)并使用 resize2fs
.
至于您关于在 Helm Chart 中更改默认磁盘大小的问题,这是一个公平的问题。但是一个好的默认大小是多少?太低了,很容易出现这种情况。太高了,它在没有足够大磁盘的环境中无法成功部署。特别是,minikube
使用 tmpfs 支持的卷,因此它们的大小受到机器内存的很大限制。至少,在实例化图表后在输出中发出警告似乎是有道理的。