坚持单一价值 Kubernetes 和 Golang

Persist a Single Value Kubernetes & Golang

我在 Kubernetes 中有一个 Golang 应用程序 运行,它需要在内存之外保留一个字符串值。换句话说,如果重新部署应用程序或重新启动 pod - 该值不会丢失。我还需要能够定期从 golang 读写这个。

执行此操作的好方法是什么?

到目前为止我想到了:

  1. ConfigMap:这是否会被视为滥用配置映射,它们是否持久存在?
  2. PersistentVolume:这似乎很合适,但我可以用它存储单个值或文件,而不是设置整个数据库吗?

谢谢!

在 Kubernetes 中,您可以通过以下选项在 POD 外部存储数据(或者实际上在 PODs 之间共享数据)。

  1. Persistent Volume:一个共享文件系统,您将数据作为文件共享
  2. ConfigMap/Secret:基于Kubernetes的共享对象,你用KubernetesAPI存储数据; Kubernetes 在引擎盖下使用 etcd 并且共识算法应用于每个数据更改,因此数据的大小需要很小并且性能不是很好
  3. 第三方工具:Hazelcast、Redis、TiKV;您使用他们的客户端(或 REST API)来存储您的值

我不确定您的确切用例,但我会从第 3 方软件开始。使用 Helm Chart of Operators 部署它们非常简单。另一种选择是持久卷。 ConfigMap/Secret,我会把它作为最后的手段。