我已经开始使用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
由于服务不同,我怎么能告诉我的应用程序不但可以从主服务器读取内容?
如果不支持此功能,那么此舵图的“点”是什么?随着缺乏故障转移,奴隶们似乎毫无意义。
答案 0 :(得分:0)
说实话,我也有这个问题。该文档没有明确说明如何处理/启用此功能。我一直想出的唯一解决方案,我认为这不是最佳方案,也不知道这是否是“正确”的方法,就是在应用程序方面(不是k8s)连接到正确的方法K8s服务(用于读/写的主服务器(db-postgresql
)和用于只读的从属设备(db-postgresql-read
)基于预期的DB操作类型。当然也想在这里提供更多指导。我一直在寻找Stolon作为替代方案。