我有一个在 AWS EKS 上运行的简单单 pod postgresql 部署(代码 here)。我已经使用负载均衡器公开了 pod。
kubectl get services/postgres-lb -o yaml
这会产生以下结果:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "false"
service.beta.kubernetes.io/aws-load-balancer-type: nlb
creationTimestamp: 2019-04-23T02:36:54Z
labels:
app: postgres
name: postgres-lb
namespace: default
resourceVersion: "1522157"
selfLink: /api/v1/namespaces/default/services/postgres-lb
uid: <HASHREMOVED?
spec:
clusterIP: 10.100.94.170
externalTrafficPolicy: Cluster
ports:
- nodePort: 32331
port: 5434
protocol: TCP
targetPort: 5432
selector:
app: postgres
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- hostname: ...aaadz-example.elb.us-east-1.amazonaws.com
这有效,我可以按预期访问 pod。但是,如果不活跃,与 postgresql 的连接似乎每分钟左右就会断开一次。我很确定至少某些 AWS 负载均衡器会以这种方式“耗尽连接”;因此上面的注释不会耗尽连接。但是,我仍然看到空闲时断开连接的相同行为。
例如,托管数据库然后将其单个端口公开到互联网的 AWS EKS 最佳实践是什么?网络搜索出现了许多变体,但似乎都过于复杂或不能直接应用。我使用过 GCE,发现它在网络和公开端口方面要简单得多,所以我觉得我在 AWS 上遗漏了一些明显的东西。
最佳答案
尝试将 service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout
注释设置为某个更大的值(在 AWS 中默认为 60 秒)。
关于postgresql - 如何避免 AWS EKS 上的连接断开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55810079/