Use a Service to Access an Application in a Cluster

    You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:

    To check the version, enter .

    Objectives

    • Run two instances of a Hello World application.
    • Create a Service object that exposes a node port.
    • Use the Service object to access the running application.

    Here is the configuration file for the application Deployment:

    service/access/hello-application.yaml

    1. Run a Hello World application in your cluster: Create the application Deployment using the file above:

      1. kubectl apply -f https://k8s.io/examples/service/access/hello-application.yaml

      The preceding command creates a and an associated ReplicaSet. The ReplicaSet has two each of which runs the Hello World application.

    2. Display information about your ReplicaSet objects:

      1. kubectl get replicasets
      2. kubectl describe replicasets
    3. Create a Service object that exposes the deployment:

    4. Display information about the Service:

      1. kubectl describe services example-service

      The output is similar to this:

      1. Name: example-service
      2. Namespace: default
      3. Annotations: <none>
      4. Selector: run=load-balancer-example
      5. IP: 10.32.0.16
      6. Port: <unset> 8080/TCP
      7. TargetPort: 8080/TCP
      8. NodePort: <unset> 31496/TCP
      9. Endpoints: 10.200.1.4:8080,10.200.2.5:8080
      10. Events: <none>

      Make a note of the NodePort value for the service. For example, in the preceding output, the NodePort value is 31496.

    5. List the pods that are running the Hello World application:

      1. kubectl get pods --selector="run=load-balancer-example" --output=wide
    6. Get the public IP address of one of your nodes that is running a Hello World pod. How you get this address depends on how you set up your cluster. For example, if you are using Minikube, you can see the node address by running kubectl cluster-info. If you are using Google Compute Engine instances, you can use the gcloud compute instances list command to see the public addresses of your nodes.

    7. On your chosen node, create a firewall rule that allows TCP traffic on your node port. For example, if your Service has a NodePort value of 31568, create a firewall rule that allows TCP traffic on port 31568. Different cloud providers offer different ways of configuring firewall rules.

    8. Use the node address and node port to access the Hello World application:

      1. curl http://<public-node-ip>:<node-port>

      where <public-node-ip> is the public IP address of your node, and <node-port> is the NodePort value for your service. The response to a successful request is a hello message:

      Using a service configuration file

      As an alternative to using , you can use a to create a Service.

      To delete the Service, enter this command:

      1. kubectl delete services example-service

      What’s next

      Learn more about .