Как вы упомянули, Kubernetes может самостоятельно управлять балансировкой нагрузки, поэтому ответ на ваш первый вопрос - нет, вам не нужно запускать nginx, особенно в модуле, где находится ваше приложение.Обычно службы и модули имеют IP-адреса, которые маршрутизируются сетью кластера, и весь трафик, который заканчивается на пограничном маршрутизаторе, будет отброшен.Таким образом, в Kubernetes существует набор правил, которые позволяют входящим соединениям обращаться к службам кластера.Мы называем это Ingress :
Объект API, который управляет внешним доступом к службам в кластере, обычно HTTP.
Запутанная часть заключается в том, чтоСам по себе вход не делает много.Вам нужно будет создать Ingress controller , который является демоном, развернутым как Pod.Его работа заключается в том, чтобы читать информацию о входном ресурсе и обрабатывать ее соответствующим образом.Фактически любая система, способная к обратному проксированию, может быть входным контроллером.Подробнее о контроллере Ingress и Ingress вы можете прочитать в практическом подходе в этой статье .Кроме того, я не знаю о вашей среде, поэтому, пожалуйста, помните, что вы должны использовать тип LoadBalancer , если вы находитесь в облаке, и набирать NodePort , если вы находитесь в «голой» среде.
Переходя ко второму вопросу, вы можете запустить свое приложение на любом желаемом порте, просто не забудьте настроить этот порт во всех других файлах конфигурации.
О портах и способах предоставления сервисов вы должны проверить источники в документации о том, как работает модель Kubernetes по сравнению с моделью контейнеров.Вы можете найти поучительную статью здесь .
К сожалению, у меня нет опыта работы с Gunicorn, поэтому я не смогу рассказать вам, какую роль он играет здесь.Надеюсь это поможет.