Once you have deployed an application into Kubernetes, it will not be available to the outside world.
For this to be possible, you need to expose it via a Service.
Services can be exposed in 4 different ways:
- ClusterIP (default) – Exposes the Service via an internal IP to the cluster (only available internally)
- NodePort – Exposes the Service via the same port on all Nodes
- LoadBalancer – Creates an external LoadBalancer in the current cloud
- ExternalName – Maps the Service to the
externalName, and returns a CNAME record with it’s value
How to Expose your App via a Service in Kubernetes
kubectl get pods to list your available pods.
kubectl get services to list your existing Services.
kubectl get deployments to list your active deployments.
Once you have this information, you can run the following command:
kubectl expose deployment/<your-deployment-name> --type="NodePort" --port 8080
This will expose your deployment on port 8080.
Verify that the App has been exposed
We can verify that the deployment has been exposed by running the following:
kubectl get services
This will show the new exposed Service we requested.
$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 28s kubernetes-bootcamp NodePort 10.101.234.115 <none> 8080:30062/TCP 3s