在 kubernetes etcd 中存储一些应用程序值?

问题描述

我有一些用户设置的应用程序,它在 kubernetes 集群上运行。 我希望用户设置能够在应用程序崩溃/pod 重启后继续存在。

我首先考虑拥有一个数据库实例以将其保存在 kubernetes 之外。然后我想,也许我可以滥用 etcd 来存储少量自定义数据。 这是保持简单的好方法吗?

我看到的另一个选项:

  1. kubernetes 之外的单独数据库实例(overkill)
  2. 不断重新读取 kubernetes 中 PV 卷上的一些 json 文件
  3. 也许使用 hashicorp 保险库?

你会用什么?它的数据量非常小

解决方法

您可以使用 Persistent VolumePersistent Volume claimpvcPersistent Volume claim 将保留数据以防 pod 重新启动或 pod 崩溃。这是我认为存储用户数据的最佳方式。您可以根据需要拥有合适的存储类型和资源大小。你可以查看官方文档。 Ref

,

如果您想使用 Kubernetes 内置数据库 etcd,它并不真正适合此目的,不应在实践中使用。应用程序不应该知道 Kubernetes。您需要使用 DB 或 PVC 将应用相关的对象存储在磁盘中(例如 json、yaml 或其他文件)。

,

您可以使用 etcd,但是对于您上面概述的要求,它可能有点过分。如果您确定要在 k8s 中存储有状态信息,我建议您将持久卷安装到您的部署中,然后使用 BoltDB (https://github.com/boltdb/bolt) 之类的文件存储与之交互。

话虽如此,我认为在 k8s 之外运行一个简单的 SQL 数据库是最简单的整体解决方案。任何有状态的事情对于 kubernetes 来说从来都不是简单的,这样您就可以轻松地管理数据库。