Ответ 1
ClusterIP может означать две вещи: тип сервиса, доступный только в кластере Kubernetes, или внутренний ("виртуальный") IP компонентов в кластере Kubernetes. Предполагая, что вы запрашиваете поиск внутреннего IP-адреса кластера, к нему можно получить доступ тремя способами (с использованием простого примера nginx):
-
Через
kubectl
программу командной строкиkubectl
:$ kubectl describe service my-nginx Name: my-nginx Namespace: default Labels: run=my-nginx Selector: run=my-nginx Type: LoadBalancer IP: 10.123.253.27 LoadBalancer Ingress: 104.197.129.240 Port: <unnamed> 80/TCP NodePort: <unnamed> 30723/TCP Endpoints: 10.120.0.6:80 Session Affinity: None No events.
-
Через API kubernetes (здесь я использовал
kubectl proxy
для маршрутизации через localhost в мой кластер):$ kubectl proxy & $ curl -G http://localhost:8001/api/v1/namespaces/default/services/my-nginx { "kind": "Service", "apiVersion": "v1", "metadata": <omitted>, "spec": { "ports": [ { "protocol": "TCP", "port": 80, "targetPort": 80, "nodePort": 30723 } ], "selector": { "run": "my-nginx" }, "clusterIP": "10.123.253.27", "type": "LoadBalancer", "sessionAffinity": "None" }, "status": { "loadBalancer": { "ingress": [ { "ip": "104.197.129.240" } ] } } }
-
Через переменную среды
$<NAME>_SERVICE_HOST
в контейнере Kubernetes (в этом примереmy-nginx-yczg9
является именем модуля в кластере):$ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_HOST' 10.123.253.27
Более подробную информацию об IP- адресах служб можно найти в документации " Службы в Кубернете", а предыдущий пример простого nginx - хороший пример предоставления услуги за пределами вашего кластера с помощью LoadBalancer
службы LoadBalancer
.