Каким образом мы можем предоставить приложение, которое работает в нашем кластере, k8s нашим пользователям?
Если наше приложение работает через HTTP, мы можем использовать ingress-контроллер, который является реверс-прокси, интегрированным с Kubernetes API. Этот контроллер позволяет на основе custom resources маршрутизировать трафик по HTTP.
— Для ряда задач мы можем использовать Kubernetes service. Мы можем использовать тип externalIp, чтобы опубликовать порт сервиса на определенных IP-адресах наших нод. Тип nodePort позволяет опубликовать порт сервиса на всех нодах на произвольных портах в определенном диапазоне. Также есть опция trafficPriority: local, которая позволяет предпочитать PODы приложения, находящегося на локальной ноде при маршрутизации трафика.
— Для работы в облаке мы можем использовать тип loadBalancer. Это создает сервис, аналогичный nodePort, но с добавлением load balancer, который маршрутизирует трафик на ноды кластера через порты, выбранные для nodePort.
— Мы также можем использовать kubectl proxy для проброса порта сервиса локально на нашу машину, что может быть полезно для разработки.
— Используя nodeNetwork: true (нужно проверить, когда будет доступ в интернет), мы можем разрешить приложению, работающему в контейнере, использовать сеть ноды и занимать сетевые порты непосредственно на интерфейсах ноды.
Post #193
1.44K
- 👍 2