Как настроить адресацию и развёртывание игровых серверов в kubernetes?

Есть kubernetes кластер. В нём 2 типа сущностей: api сервера и игровые сервера. Все запросы от пользователей поступают на api сервера. В свою очередь api сервера должны обращаться к игровым серверам при всех запросах, связанных с играми. Игры равномерно распределяются между игровыми серверами. Соответственно при запросе пользователя, относящемся к какой-то конкретной игре api сервер должен перенаправить этот запрос на определённый игровой сервер, на котором запущена эта игра.

У меня в связи с этим пара вопросов:

1. Как в kubernetes настроить адресацию между api и игровыми серверами? Как дать понять api серверу куда ему нужно отправить запрос, связанный с определённой игрой? Где и в каком формате лучше хранить информацию о том на каких игровых серверах какие игры запущены?

2. Как обеспечить незаметное обновление игровых серверов так чтобы при обновление старые игровые сервера продолжали работать до тех пор пока не закончатся все текущие игры на них, а все новые игры запускались уже на новых серверах?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 2
1. Можно использовать service discovery, к примеру, Consul
2.a Я бы подумал о том, чтобы сделать сервера stateless – состояние хранить во внешней БД (напр. Redis) и подхватывать состояние из него новым инстансом при Rolling Update.
2.б Другой вариант – Gracefull Shutdown. Перехватив сигнал и настроив достаточно продолжительный grace-period можно добиться тго что сервер дождется завершения сессии и только затем завершится
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
1. По-моему, самое простое - каждую игру запускать как сервис в K8S, и тогда ничего не надо хранить - K8S сам это делает.

2. Использовать "StrategyType: RollingUpdate" deployment https://kubernetes.io/docs/concepts/workloads/cont...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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