Сервис
В кластере Kubernetes каждый под имеет внутренний IP-адрес. Поды создаются и удаляются, и их IP-адреса меняются, поэтому использование IP-адресов подов напрямую не имеет смысла. Чтобы получить постоянный доступ к подам и отказаться от использования их внутренних IP-адресов, используйте сервис.
Сервис — это объект API Kubernetes (Service)
С помощью сервиса вы получаете постоянный IP-адрес, который будет существовать на протяжении всего жизненного цикла сервиса, даже при изменении IP-адресов подов. Сервис также обеспечивает балансировку нагрузки. Клиенты отправляют запросы на один IP-адрес, и их запросы балансируются между подами, которые принадлежат сервису.
Набор подов, принадлежащих сервису, определяется селектором. Селектор задается пользователем при создании пода и позволяет фильтровать список ресурсов на основе меток — пар ключ-значение, прикрепленных к ресурсу. Под принадлежит сервису, если имеет все Kubernetes-метки, указанные в селекторе.
В зависимости от задачи вы можете использовать сервисы различных типов.
Типы сервисов
В кластерах Kubernetes можно использовать различные типы сервисов, в том числе:
ClusterIP
- Доступ к сервису существует только внутри сети кластера Kubernetes по внутреннему IP-адресу.
- Не требует использования дополнительных облачных ресурсов.
NodePort
— расширение типаClusterIP
.- Обеспечивает доступ к сервису по внутренним или публичным IP-адресам узлов кластера Kubernetes.
- Не требует использования дополнительных облачных ресурсов.
LoadBalancer
— расширение типаNodePort
.- Обеспечивает доступ к сервису через создаваемый облачный сетевой балансировщик нагрузки.
- Требует использования дополнительных облачных ресурсов — сетевого балансировщика нагрузки.
Чтобы опубликовать приложение, используйте сервис типа LoadBalancer
на основе сетевого балансировщика нагрузки с публичным или внутренним IP-адресом.
Если необходима защита от DDoS, зарезервируйте публичный IP-адрес со включенной защитой и укажите его с помощью опции loadBalancerIP
.
Подробнее о типах сервисов читайте в документации Kubernetes