H2 是一个开源的轻量级 Java 数据库。基本上我正在尝试构建一个 DevOps 管道,但对于 Kubernetes 部分,我需要将 h2 数据库本地连接到 pod,而不是使用 aws rds 来进行类似的操作。关于如何配置它的任何想法?
1 回答
当您说需要在每个 pod 中本地连接 H2 时,有点不清楚您的意思是整体 1 个 H2 还是每个 pod 1 个。我假设您需要一台服务器 H2 而不是嵌入式服务器。
如果您的要求是让所有 pod 与同一个 H2 实例通信,您可以创建一个在服务器模式下运行 H2 的容器并在部署中运行它。您还需要一个服务来公开集群中的数据库端口。有关详细信息,请参阅https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#accessing-the-service。
您可能还希望使用支持数据库的文件运行 H2,除非您可以在其 pod 重新启动时通过其他魔术重新创建数据库的内容。要使该文件在 H2 重新启动时保持不变,您需要提供持久卷和持久卷绑定。PV 的详细信息是 Kubernetes 平台特定的。 https://kubernetes.io/docs/concepts/storage/persistent-volumes/
如果您不需要单个 H2,而是每个 pod 中需要一个 H2,您可以在每个 pod 中在其他容器旁边运行一个 H2 容器。或者,如果您不想在容器中使用 H2,您可以在 Deployment 的主容器命令中分叉 H2 服务器。(虽然丑陋,但并不是真正的 Kubernetes 方式。)在这种情况下,您不需要服务,因为您将在 Pod 中本地连接到 H2。但是你会做一个真正的噩梦,假设你需要持久存储,我认为管理持久卷来保存每个 Pod 的 H2 的数据库。
最终,您可能会认为 RDS 更容易......