Tengo 2 servicios:
Servicio API Restful/websocket con Nginx (2 réplicas)
Servicio Daemon (1 réplica)
El servicio daemon emitirá un evento websocket a la interfaz en algún momento. Sin embargo, el evento no parece emitirse con éxito a la interfaz desde el servicio daemon.
También traté de emitir eventos desde el servidor API al front-end, y el evento se emitió con éxito al front-end. (tal vez porque la interfaz está conectada al servidor API WebSocket).
Lo que he hecho para sticky-session:
--- 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
De los documentos de kubernetes.io DaemonSet :
Servicio: cree un servicio con el mismo selector de Pod y use el servicio para llegar a un demonio en un nodo aleatorio. (No hay forma de llegar a un nodo específico).
Entonces creo que sessionAffinity no puede funcionar con DaemonSet.