Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find the url of a service in kubernetes?

I have a local kubernetes cluster on my local docker desktop.

This is how my kubernetes service looks like when I do a kubectl describe service

Name:              helloworldsvc Namespace:         test Labels:            app=helloworldsvc Annotations:       kubectl.kubernetes.io/last-applied-configuration:                      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"helloworldsvc"},"name":"helloworldsvc","namespace":"test... Selector:          app=helloworldapp Type:              ClusterIP IP:                10.108.182.240 Port:              http  9111/TCP TargetPort:        80/TCP Endpoints:         10.1.0.28:80 Session Affinity:  None Events:            <none> 

This service is pointing to a deployment with a web app.

My question how to I find the url for this service? I already tried http://localhost:9111/ and that did not work.

I verified that the pod that this service points to is up and running.

like image 872
Foo Avatar asked Jan 02 '20 04:01

Foo


People also ask

Where can I find Kubernetes host?

To find the cluster IP address of a Kubernetes pod, use the kubectl get pod command on your local machine, with the option -o wide . This option will list more information, including the node the pod resides on, and the pod's cluster IP. The IP column will contain the internal cluster IP address for each pod.

How do you expose Kubernetes service?

From the Service type drop-down list, select Cluster IP. Click Expose. When your Service is ready, the Service details page opens, and you can see details about your Service. Under Cluster IP, make a note of the IP address that Kubernetes assigned to your Service.


2 Answers

URL of service is in the below format:

<service-name>.<namespace>.svc.cluster.local:<service-port> 

In your case it is:

helloworldsvc.test.svc.cluster.local:9111 
like image 115
P Ekambaram Avatar answered Sep 16 '22 12:09

P Ekambaram


Get the service name: kubectl get service -n test

URL to a kubernetes service is service-name.namespace.svc.cluster.local:service-port where cluster.local is the kubernetes cluster name.

To get the cluster name: kubectl config get-contexts | awk {'print $2'}

URL to service in your case will be helloworldsvc.test.svc.cluster.local:9111

The way you are trying to do won't work as to make it available on your localhost you need to make the service available at nodeport or using port-forward or using kubectl proxy.

However, if you want dont want a node port and to check if inside the container everything works fine then follow these steps to get inside the container if it has a shell.

kubectl exec -it container-name -n its-namespace-name sh

then do a

curl localhost:80 or curl helloworldsvc.test.svc.cluster.local:9111 or curl 10.1.0.28:80

but both curl commands will work only inside Kubernetes pod and not on your localhost machine.

To access on your host machine kubectl port-forward svc/helloworldsvc 80:9111 -n test

like image 30
redzack Avatar answered Sep 18 '22 12:09

redzack