Службы ( или сервисы) Kubernetes позволяют подам взаимодействовать вне кластера Kubernetes.
Существует три типа сервисов:
ClusterIP
ClusterIP – это внутренний IP-адрес по умолчанию, используемый при создании внутренней службы.
Этот IP-адрес кластера доступен только внутри кластера и недоступен из внешней сети.
Когда вы выполните kubectl get services, вы увидите CLUSTER-IP в заголовке, и это IP-адрес по умолчанию, созданный для каждой службы.
Независимо от того, какой это тип сервиса.
NodePort
NodePort предоставляет порт на всех рабочих нодах в кластере Kubernetes.
Вы можете определить порт вручную или позволить кластеру Kubernetes создать его для вас динамически.
Порты NodePort доступны каждой рабочей ноде и должны быть уникальными для каждой службы.
Load balancer
Load balancer- это еще один слой над NodePort.
При создании службы Load balancer сначала создается виртуальный IP-адрес NodePort и внешнего балансировщика нагрузки.
Load balancer относятся к облачным провайдерам и могут быть реализованы только в Azure, GCS, AWS, OpenStack и OpenSwift.
Управление службами Kubernetes
Список сервисов
Команда, показанная ниже перечислит все сервисы в пространстве имен default.
kubectl get services
Пример вывода:
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6h
Команда, показанная ниже выведет список всех сервисов из всех пространств имен.
kubectl get services --all-namespaces
Пример вывода:
$ kubectl get services --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6h
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 6h