Как 'watch = true' реализован на kube-apiserver? - PullRequest
1 голос
/ 14 января 2020

При просмотре кубернетес ресурсов за изменениями, что именно происходит под капотом? Неужели http внезапно изменится на wss соединение?

Чтобы решить проблему слишком большого числа запросов к kube-apiserver, я переписываю некоторый код, который, я думаю, является скорее шаблоном оператора.

В нашей мультитенантной микросервисной архитектуре все службы используют одну и ту же библиотеку для просмотра сведений о подключении к конкретным арендаторам c БД. Сведения о соединении сохраняются в секретах в том же пространстве имен, что и приложение. У каждой арендаторской БД есть свой собственный секрет.

Таким образом, при каждом вызове все секреты с правильной меткой считываются и анализируются для получения необходимой информации о подключении к БД. У нас около 400 сервисов / модулей ...

Моя идея: вместо чтения всех секретов при каждом вызове создайте кэш и обновляйте кэш каждый раз, когда соответствующий секретный ключ изменялся с помощью наблюдателя.

Мои проблемы: я просто заменяю запросы http одинаково дорогими веб-сокетами? Как я понимаю, теперь у меня будет открытое соединение через веб-сокет для каждой службы / модуля, которое по-прежнему равно 400 открытым соединениям.

Было бы лучше иметь прокси-службу для наблюдения за секретами (запросы kube-apiserver) и затем все службы запрашивают эту службу для получения сведений о соединении (intr anet запросов, kube-apiserver не связан)?

1 Ответ

2 голосов
/ 14 января 2020

Из источников :

// ServeHTTP serves a series of encoded events via HTTP with Transfer-Encoding: chunked
// or over a websocket connection.

Это в значительной степени зависит от клиента, какой протокол используется (либо chunked http, либо ws), оба они имеют свою стоимость, которую вы Вам придется сравнить с вашей текущей частотой запросов.

Возможно, вам лучше использовать прокси-кеш, который либо просматривает, либо опрашивает через регулярные промежутки времени, но это во многом зависит от вашего приложения.

...