Skip to content

5.3 Services and Ingress

  • Сервис это объект kubernetes, который предоставляет единую точку входа для доступа к подам представляющих одно и тоже приложение
  • Сервис (Service) в Kubernetes — это абстрактный объект, который определяет логический набор подов и политику доступа к ним.
  • Сервисы создают слабую связь между подами, которые от них зависят.

Note

Поды – это не постоянные сущности кластера. В любой момент времени вы можете добавить новый под или удалить не нужный. При перемещении пода между нодами кластера, под создается на новой ноде и удаляется на старой. При этом у пода меняется IP адрес. Именно поэтому не стоит обращаться к поду по ip адресу.

kubectl create -f svc.yaml

kubectl get services

kubectl get svc

# Пример: выполняем curl внутри пода на сервис
# -- означает для kubectl об окончании ввода параметров
# если бы мы не использовали -- то параметр -s попытался бы отнести к kubectl
kubectl exec kubia-9g -- curl -s http://10.105.77.0

Info

ping до сервиса работать не будет, т.к. service асоциируется с ip и port

4 типа сервиса

  • ClusterIP (по умолчанию) — открывает доступ к сервису по внутреннему IP-адресу в кластере. Этот тип делает сервис доступным только внутри кластера;
  • NodePort — открывает сервис на том же порту каждого выбранного узла в кластере с помощью NAT. Делает сервис доступным вне кластера через :. Является надмножеством ClusterIP.
  • LoadBalancer — создает внешний балансировщик нагрузки в текущем облаке (если это поддерживается) и назначает фиксированный внешний IP-адрес для сервиса. Является надмножеством NodePort.
  • ExternalName — открывает доступ к сервису по содержимому поля externalName (например, foo.bar.example.com), возвращая запись CNAME с его значением. При этом прокси не используется.

Ingress

  • Работает на OSI уровне 7
  • Оперирует на уровне приложения сетевого стека
  • Может предоставить функциона такой как сохранение сессии