Exposing an External IP Address to Access an Application in a Cluster
- Install kubectl.
- Use a cloud provider like Google Kubernetes Engine or Amazon Web Services to create a Kubernetes cluster. This tutorial creates an , which requires a cloud provider.
- Configure to communicate with your Kubernetes API server. For instructions, see the documentation for your cloud provider.
- Run five instances of a Hello World application.
- Create a Service object that exposes an external IP address.
- Use the Service object to access the running application.
Run a Hello World application in your cluster:
service/load-balancer-example.yaml
kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml
The preceding command creates a and an associated ReplicaSet. The ReplicaSet has five each of which runs the Hello World application.
Display information about the Deployment:
kubectl describe deployments hello-world
Display information about your ReplicaSet objects:
kubectl get replicasets
kubectl describe replicasets
Create a Service object that exposes the deployment:
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
-
The output is similar to:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service LoadBalancer 10.3.245.137 104.198.205.71 8080/TCP 54s
Note: The
type=LoadBalancer
service is backed by external cloud providers, which is not covered in this example, please refer to this page for the details.Note: If the external IP address is shown as <pending>, wait for a minute and enter the same command again.
Display detailed information about the Service:
kubectl describe services my-service
The output is similar to:
Name: my-service
Namespace: default
Selector: app.kubernetes.io/name=load-balancer-example
Type: LoadBalancer
IP: 10.3.245.137
LoadBalancer Ingress: 104.198.205.71
Port: <unset> 8080/TCP
NodePort: <unset> 32377/TCP
Endpoints: 10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more...
Session Affinity: None
Events: <none>
Make a note of the external IP address (
LoadBalancer Ingress
) exposed by your service. In this example, the external IP address is 104.198.205.71. Also note the value ofPort
and . In this example, thePort
is 8080 and theNodePort
is 32377.-
kubectl get pods --output=wide
The output is similar to:
Use the external IP address (
LoadBalancer Ingress
) to access the Hello World application:curl http://<external-ip>:<port>
where
<external-ip>
is the external IP address (LoadBalancer Ingress
) of your Service, and<port>
is the value ofPort
in your Service description. If you are using minikube, typingminikube service my-service
will automatically open the Hello World application in a browser.The response to a successful request is a hello message:
Hello Kubernetes!
To delete the Service, enter this command:
To delete the Deployment, the ReplicaSet, and the Pods that are running the Hello World application, enter this command: