ClusterIP — тип Service по умолчанию в Kubernetes, обеспечивающий стабильный доступ внутри кластера. Kubernetes назначает виртуальный IP‑адрес (IP‑адрес, ограниченный кластером), который может быть доступен только внутри кластера из блока Service CIDR кластера. CoreDNS сопоставляет cluster-internal domain name с назначенным IP‑адресом кластера. Формат доменного имени: \u003cService-name\u003e\u003cnamespace-of-the-workload\u003e.svc.cluster.local:\u003cport\u003e, например, nginx.default.svc.cluster.local:80.
Если pod‑ам необходимо взаимодействовать друг с другом внутри кластера, вы можете создать Service типа ClusterIP. Например, если frontend‑pod в кластере должен получить доступ к backend‑базе данных в том же кластере, вы можете создать Service типа ClusterIP.
Figure 1 демонстрирует работу ClusterIP. Вы можете ознакомиться с каналом доступа, портом контейнера и правилами сопоставления портов доступа для этого типа Service.
Figure 1 Внутрикластерный доступ (ClusterIP)

Параметр | Описание |
|---|---|
Service Name | Введите имя, которое может быть таким же, как имя workload. |
Service Type | Выберите ClusterIP. |
Namespace | Выберите namespace, к которому относится workload. |
Selector | Service будет связан с pod‑ами workload на основе label и будет направлять трафик к pod‑ам с этой label. Вы можете добавить ключ и значение для метки pod и нажать Confirm. Вы также можете нажать Reference Workload Label, чтобы использовать метку существующей workload. В отображённом диалоговом окне выберите workload и нажмите OK. |
Protocol Version | Выберите IP‑адрес нужной версии в соответствии с требованиями service. Эта опция доступна только в кластерах v1.15 и новее с включённым IPv6 (устанавливается при создании кластера). |
Port |
|
Вы можете настроить доступ к Service с помощью kubectl. В этом разделе в качестве примера используется workload Nginx, чтобы описать, как реализовать внутрикластерный доступ с помощью kubectl.
vi nginx-deployment.yaml
Содержимое файла:
vi nginx-clusterip-svc.yaml
Содержимое файла:
kubectl create -f nginx-deployment.yaml
Если отображается информация, аналогичная следующей, нагрузка создана:
deployment/nginx created
Проверьте созданную нагрузку.
kubectl get pod
Если отображается информация, аналогичная следующей, нагрузка работает:
NAME READY STATUS RESTARTS AGEnginx-2601814895-znhbr 1/1 Running 0 15s
kubectl create -f nginx-clusterip-svc.yaml
Если отображается информация, аналогичная следующей, Service создаётся:
service/nginx-clusterip created
Проверьте созданный Service.
kubectl get svc
Если отображается информация, аналогичная следующей, Service создан, и 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‑домен для ClusterIP Service.
Вы можете упростить доменное имя в соответствии с вашими требованиями. Например, если Service и pod, осуществляющий доступ, находятся в одном пространстве имён, можно использовать nginx-clusterip:8080 для доступа к нему. Если они находятся в разных пространствах имён, можно использовать nginx-clusterip.default:8080 для доступа к нему.
Если доступ выполнен успешно, будет отображена следующая информация:
<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>