ClusterIP - это тип Service по умолчанию в Kubernetes и обеспечивает стабильный внутрикластерный доступ. Kubernetes назначает виртуальный IP‑адрес (IP‑адрес, ограниченный кластером), который может быть доступен только внутри кластера из CIDR‑блока Service кластера. CoreDNS сопоставляет внутрикластерное доменное имя назначенному IP‑адресу кластера. Формат доменного имени: <Service-name>.<namespace-of-the-workload>.svc.cluster.local:<port>, например, nginx.default.svc.cluster.local:80.
Если pod'ам необходимо взаимодействовать друг с другом внутри кластера, вы можете создать Service типа ClusterIP. Например, если фронтенд‑pod в кластере должен получить доступ к бэкенд‑базе данных в том же кластере, вы можете создать Service типа ClusterIP.
Рисунок 1 показывает, как работает ClusterIP. Вы можете изучить канал доступа, порт контейнера и правила сопоставления порта доступа для этого типа Service.
Рисунок 1 Внутрикластерный доступ (ClusterIP)

Параметр | Описание |
|---|---|
Имя Service | Введите имя, которое может совпадать с именем рабочей нагрузки. |
Тип Service | Выберите ClusterIP. |
Namespace | Выберите пространство имён, к которому относится рабочая нагрузка. |
Селектор | Service будет связан с pod'ами рабочей нагрузки на основе метки и будет перенаправлять трафик к pod'ам с этой меткой. Вы можете добавить ключ и значение для метки pod и щелкнуть Подтвердить. Вы также можете щелкнуть Ссылка на метку рабочей нагрузки для использования метки существующей рабочей нагрузки. В появившемся диалоговом окне выберите рабочую нагрузку и щелкните OK. |
Версия протокола | Выберите IP‑адрес разных версий в зависимости от требований сервиса. Эта опция доступна только в кластерах v1.15 и выше с включённым IPv6 (устанавливается при создании кластера). |
Порт |
|
Вы можете настроить доступ к Service с помощью kubectl. В этом разделе в качестве примера используется нагрузка Nginx, чтобы описать, как реализовать внутрикластерный доступ с помощью kubectl.
vi nginx-deployment.yaml
Содержимое файла:
apiVersion: apps/v1kind: Deploymentmetadata:name: nginxspec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginx:latestname: nginximagePullSecrets:- name: default-secret
vi nginx-clusterip-svc.yaml
Содержимое файла:
apiVersion: v1kind: Servicemetadata:labels:app: nginxname: nginx-clusteripspec:ports:- name: service0port: 8080 # Port for accessing a Serviceprotocol: TCP # Protocol used for accessing a Service. The value can be TCPTCP or UDPUDP.targetPort: 80 # Port used by a Service to access the target container. This port is closely related to the applications running in a container. In this example, the Nginx image uses port 80 by default.selector: # Label selector. A Service selects a pod based on the label and forwards the requests for accessing the Service to the pod. In this example, select the pod with the app:nginxapp:nginx label.app: nginxtype: ClusterIP # Type of a Service. ClusterIPClusterIP указывает, что Service доступен только изнутри кластера.
kubectl create -f nginx-deployment.yaml
Если отображается информация, подобная следующей, рабочая нагрузка создана:
deployment/nginx created
Проверьте созданную рабочую нагрузку.
kubectl get pod
Если отображается информация, подобная следующей, рабочая нагрузка работает:
NAME READY STATUS RESTARTS AGEnginx-2601814895-znhbr 1/1 Running 0 15snginx-2601814895-znhbr 1/1 Running 0 15s
kubectl create -f nginx-clusterip-svc.yaml
Если отображается информация, подобная следующей, Service создаётся:
service/nginx-clusterip created
Проверьте созданный Service.
kubectl get svc
Если отображается информация, подобная следующей, Service создан, и ему назначен внутрикластерный IP‑адрес.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.247.0.1 <none> 443/TCP 4d6hnginx-clusterip ClusterIP 10.247.74.52 <none> 8080/TCP 14m
kubectl run -i --tty --image nginx:alpine test --rm /bin/sh
curl 10.247.74.52:8080
curl nginx-clusterip.default.svc.cluster.local:8080
nginx-clusterip — имя Service, default — пространство имён, в котором находится Service, и svc.cluster.local — DNS‑домен для Service типа ClusterIP.
Вы можете упростить доменное имя в соответствии с вашими требованиями. Например, если Service и pod‑клиент находятся в одном пространстве имён, можно использовать nginx-clusterip:8080 для доступа к нему. Если они находятся в разных пространствах имён, можно использовать nginx-clusterip.default:8080 для доступа к нему.
Если доступ прошёл успешно, будет отображена следующая информация:
<!DOCTYPE html><html><head><title>Добро пожаловать в nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Добро пожаловать в nginx!</h1><p>Если вы видите эту страницу, веб‑сервер nginx успешно установлен и работает. Требуется дальнейшая настройка.</p><p>Для онлайн‑документации и поддержки, пожалуйста, обратитесь к<a href="http://nginx.org/">nginx.org</a>.<br/>Коммерческая поддержка доступна по адресу<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Спасибо за использование nginx.</em></p></body></html>