У меня проблема с балансировкой нагрузки постоянных tcp-соединений с моими репликами kubernetes.
У меня есть клиенты Unity3D за пределами кластера kubernetes.
Мой кластер представляет собой кластер baremetal с MetallB установленный состоит из 3 узлов: 1 мастер и 2 рабочих.
Как я прочитал, есть два подхода:
1) клиент подключается ко всем репликам и каждый раз, когда ему нужно отправить запрос он будет делать это по случайному соединению из тех, которые он установил ранее. Периодически он обновляет соединения (в случае, если произошло автоматическое масштабирование или умерли некоторые из постоянных соединений).
Проблема здесь в том, что я не уверен, как получить доступ ко всем репликам извне, внешние службы не могут быть доступны извне.
2) обслуживать меня sh? Я смутно прочитал / понял, что они могут установить sh постоянный протокол TCP от вашего имени. Так что-то вроде этого:
Unity3D клиент <---- постоянное соединение ---> контроллер <--- постоянное соединение ----> реплики
Однако я не уверен как это сделать sh, и я не уверен, что произойдет, если сам контроллер выйдет из строя, все клиенты потеряют свои соединения? На мой взгляд, это приведет к той же проблеме, что и проблема из пункта 1), которая позволяет клиенту подключаться к нескольким различным репликам одновременно с постоянным соединением TCP.
Часть вопроса в дополнение к этому: https://learnk8s.io/kubernetes-long-lived-connections