Назад | Перейти на главную страницу

Kubernetes (K8S): клиенты TCP ждут очень долгое время ожидания при подключении к службе, когда нет модулей, обслуживающих его запросы.

Моя проблема возникла при использовании Redis в Kubernetes, но похоже, что это проблема не с самим Redis, а с сетью / инфраструктурой. Мой сценарий:

Кажется, что проблема не существует в моем dev env (локальные контейнеры докеров), потому что тайм-аут появляется через секунду или 2.

Кроме того, у клиента, который я использую, нет возможности настроить тайм-аут сокета.

  1. Является ли это правильным поведением службы - зависание соединения до истечения времени ожидания, когда нет модулей для обработки запросов? Если бы он немедленно ответил ошибкой, такой проблемы бы не было.
  2. Есть ли способ настроить этот тайм-аут на приемлемое значение где-нибудь (на уровне обслуживания, в какой-либо конфигурации сети и т. Д.)? Скажем, 5 секунд было бы нормально.

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

В вашем случае ваш Redis Client подключается напрямую к Redis Pod с помощью некоторых правил брандмауэра, настроенных в Сервисе. Следовательно, если Сервис не был затронут, проблемы с подключением могут появиться только на стороне модуля или на стороне клиента. Итак, вам нужно искать для них параметры конфигурации.