Kubernetes: Реплицированный балансировщик нагрузки nginx с общим обслуживанием - PullRequest
0 голосов
/ 26 марта 2020

Я искал возможность иметь зеркальные блоки развертывания нагрузки 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-адрес сбрасывается случайным образом.

Как это можно предотвратить?

...