Как установить липкий сеанс для нескольких сервисов в кубернетес? - PullRequest
1 голос
/ 02 мая 2020

У меня есть 2 службы:

  1. Служба API Restful / websocket с Nginx (2 реплики)

  2. Служба демона (1 реплика )

Служба демона в определенный момент отправит событие веб-сокета на веб-интерфейс. Однако кажется, что событие не было успешно отправлено во внешний интерфейс из службы демонов.

Я также попытался отправить события от сервера API на внешний интерфейс, и событие было успешно отправлено во внешний интерфейс. , (возможно, потому что интерфейс подключен к серверу API WebSocket).

Что я сделал для sticky-сессии:

---
apiVersion: "v1"
kind: "Service"
metadata:
  name: "daemon"
  namespace: app
spec:
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 80
  selector:
    app: "daemon"
  type: "NodePort"
  sessionAffinity: ClientIP  
---
---
apiVersion: "v1"
kind: "Service"
metadata:
  name: "api"
  namespace: app
spec:
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 80
  selector:
    app: "api"
  type: "NodePort"
  sessionAffinity: ClientIP
---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  annotations:
    getambassador.io/resource-downloaded: '2020-03-30T16:10:34.466Z'
  name: api
  namespace: app
spec:
  prefix: /api
  service: api:80
load_balancer:
  policy: ring_hash
  cookie:
    name: sticky-cookie
    ttl: 60s
---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  annotations:
    getambassador.io/resource-downloaded: '2020-03-30T16:10:34.466Z'
  name: api-ws
  namespace: app
spec:
  prefix: /private
  service: api:80
  use_websocket: true
load_balancer:
  policy: ring_hash
  cookie:
    name: sticky-cookie
    ttl: 60s
---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  annotations:
    getambassador.io/resource-downloaded: '2020-03-30T16:10:34.466Z'
  name: api-daemon
  namespace: app
spec:
  prefix: /daemon
  service: daemon:80
  use_websocket: true
load_balancer:
  policy: ring_hash
  cookie:
    name: sticky-cookie
    ttl: 60s

1 Ответ

0 голосов
/ 03 мая 2020

Из kubernetes.io Документы DaemonSet :

Служба: создайте службу с тем же селектором Pod и используйте службу для доступа к демону на случайном узле. (Нет способа добраться до указанного c узла.)

Поэтому я думаю, что sessionAffinity не может работать с DaemonSet.

...