Route Traffi c Into Specifi c Pod набора реплик - PullRequest
0 голосов
/ 06 марта 2020

Мне нужно направить трафик c (аудио / видео в режиме реального времени) непосредственно в указанный c контейнер для контейнеров. Количество стручков следует масштабировать по горизонтали с помощью набора реплик. Мое решение теперь состоит в том, чтобы создать StatefulSet с таким количеством служб типа NodePort, сколько имеется модулей.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: foobar
  name: foobar-app
spec:
  serviceName: foobar
  replicas: 2
  selector:
    matchLabels:
      app: foobar
  template:
    metadata:
      labels:
        app: foobar
    spec:
      containers:
      - image: foobar:latest
        name: foobar
---
apiVersion: v1
kind: Service
metadata:
  name: foobar-service-0
spec:
  type: NodePort
  selector:
    statefulset.kubernetes.io/pod-name: foobar-app-0
  ports:
    - protocol: TCP
      nodePort: 30036
      port: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: foobar-service-1
spec:
  type: NodePort
  selector:
    statefulset.kubernetes.io/pod-name: foobar-app-1
  ports:
    - protocol: TCP
      nodePort: 30037
      port: 3000

Это считается приемлемым решением или существует лучшее решение для создания служб для каждого модуля?

1 Ответ

1 голос
/ 13 марта 2020

Как объяснено в комментариях выше, я нашел решение, предоставленное здесь с помощью службы NodePort, ориентированной на StatefulSet с externalTrafficPolicy=Local. Это отключает кластерную балансировку нагрузки между различными узлами. Обязательным условием является то, что на каждый узел может работать только один модуль из набора с сохранением состояния, что может быть достигнуто установкой pod anti-affinity .

...