我已经继续并使用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
由于服务不同,我如何告诉我的应用程序允许读取的不仅仅是主服务器?
如果不支持,那么这个舵图的“要点”是什么?随着缺乏故障转移,从站似乎毫无意义。