0

我已经继续并使用postgres helm 版本在本地 kubernetes 集群上安装了一个小型“集群”。安装进行得很顺利——我们有一个主实例和两个从属实例,数据正在复制到其中(下面看到的单次重启是可以的,因为它是手动完成的测试)。

prod-postgres-postgresql-master-0   2/2       Running   0          15h
prod-postgres-postgresql-slave-0    1/1       Running   0          16h
prod-postgres-postgresql-slave-1    1/1       Running   1          9d

这些 pod 带有它们各自的服务(我使用的是 NodePort,因为没有云提供商可以将外部 IP 添加到 LoadBalancer):

prod-postgres-postgresql            NodePort    10.96.119.67    <none>        5432:31920/TCP   9d
prod-postgres-postgresql-headless   ClusterIP   None            <none>        5432/TCP         9d
prod-postgres-postgresql-metrics    ClusterIP   10.106.163.49   <none>        9187/TCP         9d
prod-postgres-postgresql-read       ClusterIP   10.97.58.56     <none>        5432/TCP         9d

用于安装的值与 repo 上的生产值相同,只是对密码和存储类进行了少量更改(为此我手动提供了所需的 PV)

我的问题:

我现在如何使用这个数据库部署来读取所有 postgres 节点?

我明白那个:

  • 只是主人写道
  • 一旦 master 死亡(例如 pod 出于某种原因处于崩溃退避状态),此掌舵图不提供任何形式的故障转移。
  • master有自己的服务:prod-postgres-postgresql
  • 奴隶有自己的服务:prod-postgres-postgresql-read

由于服务不同,我如何告诉我的应用程序允许读取的不仅仅是主服务器?

如果不支持,那么这个舵图的“要点”是什么?随着缺乏故障转移,从站似乎毫无意义。

4

1 回答 1

0

说实话我也有这个问题。该文档没有明确说明如何处理/启用它。我能够提出的唯一解决方案,我认为这不是最佳的,我也不知道它是否是“正确”的方法是,在应用程序端(不是 k8s),连接到右边K8s 服务(主(db-postgresql)用于读/写和从(db-postgresql-read)用于只读)基于预期的 DB 操作类型。当然也希望在这里获得更多指导。我一直在寻找Stolon作为替代方案。

于 2019-05-03T02:32:56.640 回答