What is the cluster IP in Kubernetes?
Run this
$ kubectl cluster-info
It shows result like this where you can see the Kubernetes master IP
ClusterIP can mean 2 things: a type of service which is only accessible within a Kubernetes cluster, or the internal ("virtual") IP of components within a Kubernetes cluster. Assuming you're asking about finding the internal IP of a cluster, it can be accessed in 3 ways (using the simple-nginx example):
Via command line
kubectl
utility:$ 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.
Via the kubernetes API (here I've used
kubectl proxy
to route through localhost to my cluster):$ 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" } ] } } }
Via the
$<NAME>_SERVICE_HOST
environment variable within a Kubernetes container (in this examplemy-nginx-yczg9
is the name of a pod in the cluster):$ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_HOST' 10.123.253.27
More details on service IPs can be found in the Services in Kubernetes documentation, and the previously mentioned simple-nginx example is a good example of exposing a service outside your cluster with the LoadBalancer
service type.