作者:青藤摄影876 | 来源:互联网 | 2022-11-14 11:39
所以我正在开发一个项目,涉及管理k8s集群内的许多postgres实例.使用Stateful Set
带有Service
for进行网络通信的每个实例进行管理.我需要Service
通过端口5432上的DNS向公共互联网公开.
这里最自然的方法是使用k8s Load Balancer
资源和外部dns之类的东西来动态地将DNS名称映射到负载均衡器端点.这对于许多类型的服务都很好,但是对于数据库,存在一个巨大的限制:空闲连接超时.AWS ELB的最大空闲超时限制为4000秒.有许多长时间运行的分析查询/事务很容易超过这个时间,更不用说可能长时间运行的操作了pg_restore
.
所以我需要某种解决方案,让我能够解决负载均衡器的局限性.Node IPs
因为我需要5432
为集群中的每个postgres实例公开端口,所以是不可能的.Ingress
也似乎不太理想,因为它是仅支持HTTP/HTTPS的第7层代理.我已经看到了涉及一些configmap chicanery的nginx-ingress的变通方法,但是我有点担心像大型项目这样的黑客攻击.ExternalName
是有趣的,但即使我能找到更好的文档,我认为它可能最终有类似的限制NodeIP
.
任何建议将不胜感激.