docker - GCE 持久化磁盘、kubernetes 和数据持久化

标签 docker rethinkdb kubernetes

在 kubernetes 内部的 pod 上下文中,我对 gcePersistentDisk 很感兴趣:

目前,我正在尝试让我的 rethinkdb 集群与 gcePersistentDisk 安装的卷一起工作,以便于备份、数据恢复、数据完整性等。事实证明这比我最初预期的要困难一些。所以,我有几个问题:

1:对于这个用例,我是否应该尝试使用 gcePersistentDisk?或者我应该使用 persistentVolumes,并在我的主机 kubelet 上使用文件系统/persistentVolumes 以持久保存数据,并且只在我进行备份时使用 gcePersistentDisk?

2:[编辑:想通了]

3:很确定这只是一个错误,但是如果您尝试扩展一个带有 gcePersistentDisk 作为卷安装的 pod,它不会抛出通常的错误:

'The ReplicationController "rethinkdb" is invalid:spec.template.spec.volumes.GCEPersistentDisk.ReadOnly: invalid value 'false': ReadOnly must be true for replicated pods > 1, as GCE PD can only be mounted on multiple machines if it is read-only.'

,而是卡在命令行上,当我查看 kublet 的日志时永远循环。

4:我解决这个问题的方向是否完全错误?如果是这样,我如何从我的 pod 中保留数据库数据?

最佳答案

不幸的是我对rethinkdb一无所知,但是使用gcePersistentDisk来存储数据是非常合理的。这样,如果运行您的 pod 的 Kubernetes 节点死机,该 pod 可以在另一个节点上重新启动(假设您的 Kubernetes 集群中有多个节点)并在数据恢复时继续访问数据。我认为您没有任何理由需要在这里使用持久卷;直接使用 GCEPersistentDisk 作为 VolumeSource 应该没问题。

我不确定当您将 RC 缩小到 0 并返回到 1 时为什么会丢失数据。我的理解是应该重新安装 PD。

关于docker - GCE 持久化磁盘、kubernetes 和数据持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528039/

相关文章:

运行 npm install 时出现 Angular 应用程序错误 - 无法解析依赖项

docker - 如何在容器内进行 rethinkdb 的自动数据库转储?

Kubernetes日志,用户 "system:serviceaccount:default:default"无法获取命名空间中的服务

kubernetes - 证书续订后,错误 : "You must be logged in to the server (Unauthorized)"

python-2.7 - 无法通过端口9092连接到Kafka

linux - 为什么在旧版本的 ubuntu 上使用新版本的 glibc 时会发生堆栈粉碎?

docker - 如何从 GitLab 安装 Dockerfile 以允许拉取和提交

javascript - RethinkDB 运算符优先级

Rethinkdb 在复合索引上使用多值 eqJoin 的性能

kubernetes - Google Cloud Kubernetes无法连接到集群