OpenShift - List Services using the oc get services command

If you are not familiar with the oc command, refer to OpenShift - Getting Started with the oc command.

There are different types of services, such as ClusterIP, NodePort and LoadBalancer. A service is used to forward requests onto one or more pods.


  • The ClusterIP service is only accessible within the OpenShift cluster
  • The NodePort service is accessible within your network
  • The LoadBalancer makes the service accessible externally, over the internet.


The oc get services command can be used to list the services in the currently selected project / namespace.


The -A or --all-namespaces flag can be used to list the services in every project / namespace.

The -n or --namespace flag can be used to list the services in a certain project / namespace.

~]# oc get services
NAME               TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
myService001       ClusterIP   <none>        27017/TCP       114d
myService002       LoadBalancer   <pending>     8443:30444/TCP  114d


The oc get service command followed by the name of a service can be used to display an individual service.

~]# oc get service myService001
NAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
myService001       ClusterIP   <none>        27017/TCP   114d


The oc describe service command can be used to show the details of the service.

~]$ oc describe service myService001
Name:              myService001
Namespace:         default
Labels:            app=my-app
Annotations:       <none>
Selector:          deployment=my-app
Type:              LoadBalancer
Port:              8080-tcp  8080/TCP
TargetPort:        8080/TCP
Session Affinity:  None
Events:            <none>


Or, the oc get services command with the --output json‚Äč or --output yaml option can be used.

~]$ oc get services my-service --output json
    "apiVersion": "v1",
    "kind": "Service",
    "metadata": {
        "annotations": {
            "": "OpenShiftNewApp"
        "creationTimestamp": "2022-06-01T01:31:51Z",
        "labels": {
            "app": "my-service",
            "": "my-service",
            "": "my-service"
        "name": "my-service",
        "namespace": "foo",
        "resourceVersion": "422167682",
        "uid": "b658b5dc-00a0-46d5-bb4e-0b3a7f175812"
    "spec": {
        "clusterIP": "",
        "clusterIPs": [
        "externalIPs": [
        "ipFamilies": [
        "ipFamilyPolicy": "SingleStack",
        "ports": [
                "name": "8080-tcp",
                "port": 8080,
                "protocol": "TCP",
                "targetPort": 8080
                "name": "8443-tcp",
                "port": 8443,
                "protocol": "TCP",
                "targetPort": 8443
                "name": "8778-tcp",
                "port": 8778,
                "protocol": "TCP",
                "targetPort": 8778
        "selector": {
            "deployment": "my-app"
        "sessionAffinity": "None",
        "type": "ClusterIP"
    "status": {
        "loadBalancer": {}


The --output jsonpath option can be used to print the value of a specific JSON key.

~]$ oc get services my-service --output jsonpath={.spec.clusterIP}


Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee

Add a Comment

We will never share your name or email with anyone. Enter your email if you would like to be notified when we respond to your comment.

Please enter 5925e in the box below so that we can be sure you are a human.


Web design by yours truely - me, myself, and I   |   |