PostgreSQL kubernetes头盔安装-从奴隶阅读

时间:2019-01-31 05:19:30

标签: postgresql kubernetes kubernetes-helm kubernetes-service

我已经开始使用postgres helm release在本地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

用于安装的值与回购中的生产值相同,只是更改了密码和存储级别(为此我手动提供了所需的PV)

我的问题:

现在如何使用此数据库部署从所有postgres节点读取?

我了解:

  • 只有主人写
  • 一旦主服务器死机(例如,出于某种原因,吊舱处于崩溃后退状态),此头盔图将不提供任何形式的故障转移。
  • 主人有自己的服务:prod-postgres-postgresql
  • 奴隶有自己的服务:prod-postgres-postgresql-read

由于服务不同,我怎么能告诉我的应用程序不但可以从主服务器读取内容?

如果不支持此功能,那么此舵图的“点”是什么?随着缺乏故障转移,奴隶们似乎毫无意义。

1 个答案:

答案 0 :(得分:0)

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