Metaprogramming
614 subscribers
103 photos
1 video
156 links
μετά- «между, после, через» (греч.)

Жизнь программиста за пределами программирования: алгоритмы, психология, инвестиции, иное.
Download Telegram
В Kubernetes можно ресурсу Service прописать либо аналогичный "проброс портов", либо указать использовать автоматически создаваемый load balancer облачного провайдера (который магическим образом у облачного провайдера прикручен к куберу).

И там, и там оркестратор сам убедится, что если запрос попал на правильный порт X но на неправильную ноду (ту, на которой не запущено в данный момент ни одной реплики нужного сервиса), то он будет прозрачно проксирован на нужную ноду. И там, и там прибитый гвоздем порт открывается всегда одновременно на всех нодах, чтобы было меньше путаницы.

б) Через использование общего HTTP-сервера

В кластере, однако, может быть запущено 20 веб-приложений (например, веб-сайтов), каждому из которых нужен порт 80 или 443. При этом приколотить намертво конкретный порт 80 ноды можно, как описано выше, только к одному конкретному сервису.

Выходят из этого положения так: запускают на весь кластер один веб-сервер (nginx или traefik), а затем динамически изменяют его конфигурацию, чтобы он на основании имени домена (или других данных HTTP-запроса) отправлял запрос в нужный сервис (заодно терминируя TLS, управляя сертификатами).

В Kubrenetes за описание таких "кусков конфигураций общего HTTP-сервера для конкретного сервиса" отвечает ресурс Ingress ("точка входа"). В Swarm, формально, решения этой проблемы нет, но существует стандартный процесс установки-настройки Traefik, который позволяет делать тоже самое (конфигурация конкретного сервиса настраивается через специальные swarm-аннотации).

Это единственное место из перечисленных, где в Kubernetes сделано что-то более просто и логично, чем в Swarm.

#programming #devops