У меня есть простое развертывание postgresql с одним модулем, работающее на AWS EKS (код здесь). Я открыл модуль с помощью балансировщика нагрузки.
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
Это работает, и я могу получить доступ к модулю, как и ожидалось. Однако соединение с postgresql, похоже, обрывается каждую минуту или около того, если оно не активно. Я почти уверен, что по крайней мере некоторые балансировщики нагрузки AWS ведут себя таким образом, чтобы «слить соединения»; следовательно, аннотация выше НЕ сливает соединения. Тем не менее, я все еще вижу то же самое поведение сбрасывания соединений при простое.
Как лучше всего использовать AWS EKS, например, для размещения базы данных, а затем предоставления ее единственного порта в Интернет? Веб-поиски выявили множество вариантов, но все они кажутся либо чрезмерно сложными, либо неприменимыми напрямую. Я использовал GCE и обнаружил, что он намного проще в отношении сети и предоставления портов, поэтому я чувствую, что мне не хватает чего-то очевидного в AWS.





Попробуйте установить для аннотации service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout большее значение (по умолчанию в AWS это 60 секунд).
можете ли вы убедиться, что тайм-аут простоя ELB действительно был изменен?
А, есть деталь. Значение должен должно быть указано в виде строки: github.com/kubernetes/kubernetes/issues/…
Я все еще вижу сброс соединения после добавления вашей аннотации. Думаю, мне нужно копнуть глубже.