Я искал возможность иметь зеркальные блоки развертывания нагрузки nginx в kubernetes, которые совместно используют один и тот же сервис kubernetes с одним внешним IP. Я попробовал сценарий с этой конфигурацией statefulset:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: loadbalancer
labels:
run: loadbalancer
spec:
serviceName: "loadbalancer"
selector:
matchLabels:
run: loadbalancer
replicas: 4
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
run: loadbalancer
spec:
containers:
- name: loadbalancer
image: /services/infrastructure/loadbalancer:latest
ports:
- containerPort: 80
protocol: TCP
- containerPort: 443
protocol: TCP
volumeMounts:
- name: certs
mountPath: /etc/letsencrypt
volumeClaimTemplates:
- metadata:
name: certs
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100M
И эта конфигурация службы:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
run: loadbalancer
name: loadbalancer
selfLink: /api/v1/namespaces/test/services/loadbalancer
spec:
clusterIP: 10.31.249.3
externalTrafficPolicy: Cluster
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
run: loadbalancer
sessionAffinity: None
type: LoadBalancer
Все 4 модуля могут успешно запросить необходимые параллельные шифрования SSL-сертификатов.
Проблема в том, что соединение через единую службу извне кластера через внешний IPv4-адрес сбрасывается случайным образом.
Как это можно предотвратить?