Достижение липкости в кластере кубернетов с помощью ingress-gce

Я пытаюсь добиться закрепления в кластере кубернетов, но меня перенаправляют на другой модуль каждый раз, когда я обращаюсь к балансировщику нагрузки. У меня установлено сродство к сеансу «ClientIP», а также я пробовал использовать «Сгенерированный файл cookie».

У меня настроена следующая внутренняя служба:

apiVersion: v1
kind: Service
metadata:
  annotations:
    beta.cloud.google.com/backend-config: '{"ports": {"80":"test-backendconfig"}}'
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{"beta.cloud.google.com/backend-config":"{\"ports\": {\"80\":\"test-backendconfig\"}}"},"labels":{"app":"test","tier":"frontend"},"name":"test","namespace":"default"},"spec":{"ports":[{"name":"backend-port","port":80,"targetPort":5000}],"selector":{"app":"test","tier":"frontend"},"sessionAffinity":"ClientIP","type":"NodePort"}}
  creationTimestamp: 2018-12-31T18:01:26Z
  labels:
    app: test
    tier: frontend
  name: test
  namespace: default
  resourceVersion: "..."
  selfLink: /api/v1/namespaces/default/services/test
  uid: ...
spec:
  clusterIP: 10.**.***.***
  externalTrafficPolicy: Cluster
  ports:
  - name: backend-port
    nodePort: 32385
    port: 80
    protocol: TCP
    targetPort: 5000
  selector:
    app: test
    tier: frontend
  sessionAffinity: ClientIP
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10800
  type: NodePort
status:
  loadBalancer: {}
3
задан 2 January 2019 в 19:26
1 ответ

Похоже, проблема в том, что клиентский IP-адрес, который видит служба, является IP-адресом балансировщика нагрузки (предполагается, что вы используете входящий трафик с вашей службой порта узла). В этой статье эта проблема обсуждается немного подробнее и предлагается обходной путь.

В качестве альтернативы вы можете использовать Группы конечных точек сети , которые по существу позволят балансировщику нагрузки внешнего интерфейса отправлять трафик непосредственно на бэкэнды контейнеров, которые должны улучшить сходство сеансов. Вы по-прежнему не можете включить определение привязки сеанса в свою входную конфигурацию для GKE, но вы можете отредактировать ресурс L7LB после его создания, чтобы включить привязку сеанса

. ​​Я также предлагаю создать запрос функции с Google для добавления аннотаций к входящему ресурсу для настройки привязки сеанса LB, чтобы эта функция была встроена в GKE (обычно не рекомендуется изменять ресурсы GKE за пределами k8s после их создания)

2
ответ дан 3 December 2019 в 06:54

Теги

Похожие вопросы