Kubernetes - трафик всегда перенаправляется на один и тот же модуль - PullRequest
0 голосов
/ 07 июня 2018

2 дня назад я получил задание настроить установку Kubernetes, не имея опыта работы с этой технологией.Извините, если мои вопросы или настройки не подходят.

Топология довольно проста: общедоступный IP , выделенный HA-прокси , настроенный для пересылки запросов на Сервисы Kubernetes , содержащие развертывание из 2 модулей.(Требуется липкость!)

 Service setup
   {
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "api-admin2",
    "namespace": "default",
    "selfLink": "/api/v1/namespaces/default/services/api-admin2",
    "uid": "98121d0d-698b-11e8-8d90-262e68d4dba8",
    "resourceVersion": "245163",
    "creationTimestamp": "2018-06-06T13:14:50Z",
    "labels": {
      "app": "api-admin"
    },
    "annotations": {
      "service.beta.kubernetes.io/azure-load-balancer-internal": "true"
    }
  },
  "spec": {
    "ports": [
      {
        "protocol": "TCP",
        "port": 80,
        "targetPort": 6543,
        "nodePort": 31302
      }
    ],
    "selector": {
      "app": "api-admin"
    },
    "clusterIP": "10.100.22.118",
    "type": "LoadBalancer",
    "sessionAffinity": "ClientIP",
    "externalTrafficPolicy": "Local",
    "healthCheckNodePort": 32660,
    "sessionAffinityConfig": {
      "clientIP": {
        "timeoutSeconds": 10800
      }
    }
  },
  "status": {
    "loadBalancer": {
      "ingress": [
        {
          "ip": "10.100.21.97"
        }
      ]
    }
  }
}

Трафик поступает по пакетам, но не по круговой схеме, весь трафик поступает в один и тот же модуль.Чтобы трафик направлялся в другой модуль, я должен остановить его получение ... Что не является целью этого ...

Есть идеи, как правильно сбалансировать трафик с липкостью?

Спасибо!

1 Ответ

0 голосов
/ 08 июня 2018

из сервисной документации для режима прокси: IPVS :

В любой из этих моделей прокси любой трафик, связанный с IP-адресом службы: порт, передается на соответствующий бэкэндбез того, чтобы клиенты ничего не знали о Kubernetes или Услугах или Стручках.Client-IP привязку к сеансу можно выбрать, установив service.spec.sessionAffinity на “ClientIP” (по умолчанию “None”), и вы можете установить максимальное время ожидания сеанса, установив поле service.spec.sessionAffinityConfig.clientIP.timeoutSeconds, если вы уже установилиservice.spec.sessionAffinity to “ClientIP” (по умолчанию «10800»).

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

Если вы также хотите указать время, это то, что нужно изменить:

 sessionAffinityConfig:
    clientIP:
      timeoutSeconds: _TIME_

Это позволит вам изменить время болезни, поэтому, если вы изменили ВРЕМЯ до 10 служба будет переключать стручки каждые 10 секунд.

...