title: How can I access the Openshift service through ClusterIP from nodes
body: <p>I am trying to access a Flask server running in one Openshift pod from other.</p>
  
  <p>For that I created a service as below.</p>
  
  <pre><code>$ oc get svc
  NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
  my-web-app   ClusterIP   172.30.216.112   &lt;none&gt;        8080/TCP   8m
  
  
  $ oc describe svc my-web-app
  Name:              my-web-app
  Namespace:         neo4j-sys
  Labels:            app=my-web-app
  Annotations:       openshift.io/generated-by=OpenShiftNewApp
  Selector:          app=my-web-app,deploymentconfig=my-web-app
  Type:              ClusterIP
  IP:                172.30.216.112
  Port:              8080-tcp  8080/TCP
  TargetPort:        8080/TCP
  Endpoints:         172.20.203.104:5000,172.20.49.150:5000
  Session Affinity:  None
  Events:            &lt;none&gt;
  </code></pre>
  
  <p>1) 
  First, I <code>ping</code> ed from one pod to other pod and got response.</p>
  
  <pre><code>(app-root) sh-4.2$ ping 172.20.203.104
  PING 172.20.203.104 (172.20.203.104) 56(84) bytes of data.
  64 bytes from 172.20.203.104: icmp_seq=1 ttl=64 time=5.53 ms
  64 bytes from 172.20.203.104: icmp_seq=2 ttl=64 time=0.527 ms
  64 bytes from 172.20.203.104: icmp_seq=3 ttl=64 time=3.10 ms
  64 bytes from 172.20.203.104: icmp_seq=4 ttl=64 time=2.12 ms
  64 bytes from 172.20.203.104: icmp_seq=5 ttl=64 time=0.784 ms
  64 bytes from 172.20.203.104: icmp_seq=6 ttl=64 time=6.81 ms
  64 bytes from 172.20.203.104: icmp_seq=7 ttl=64 time=18.2 ms
  ^C
  --- 172.20.203.104 ping statistics ---
  7 packets transmitted, 7 received, 0% packet loss, time 6012ms
  rtt min/avg/max/mdev = 0.527/5.303/18.235/5.704 ms
  </code></pre>
  
  <p>But, when I tried <code>curl</code>, it is not responding.</p>
  
  <pre><code>(app-root) sh-4.2$ curl 172.20.203.104
  curl: (7) Failed connect to 172.20.203.104:80; Connection refused
  
  (app-root) sh-4.2$ curl 172.20.203.104:8080
  curl: (7) Failed connect to 172.20.203.104:8080; Connection refused
  </code></pre>
  
  <p>2)
  After that I tried to reach cluster IP from one pod. In this case, both <code>ping, curl</code> not reachable.</p>
  
  <pre><code>(app-root) sh-4.2$ ping 172.30.216.112
  PING 172.30.216.112 (172.30.216.112) 56(84) bytes of data.
  From 172.20.49.1 icmp_seq=1 Destination Host Unreachable
  From 172.20.49.1 icmp_seq=4 Destination Host Unreachable
  From 172.20.49.1 icmp_seq=2 Destination Host Unreachable
  From 172.20.49.1 icmp_seq=3 Destination Host Unreachable
  ^C
  --- 172.30.216.112 ping statistics ---
  7 packets transmitted, 0 received, +4 errors, 100% packet loss, time 6002ms
  pipe 4
  (app-root) sh-4.2$ curl 172.30.216.112
  curl: (7) Failed connect to 172.30.216.112:80; No route to host
  </code></pre>
  
  <p>Please let me know where I am going wrong here. Why the above cases #1, #2 failing. How to access the clusterIP services. </p>
  
  <p>I am completely new to the services and accessing them and hence I might be missing some basics.</p>
  
  <p>I gone through other answers <a href="https://stackoverflow.com/questions/33439181/how-can-i-access-the-kubernetes-service-through-clusterip">How can I access the Kubernetes service through ClusterIP</a> <a href="https://stackoverflow.com/questions/33439181/how-can-i-access-the-kubernetes-service-through-clusterip">1</a>. But, it is for <code>Nodeport</code> which is not helping me.</p>
  
  <p>Updates based on below comment from Graham Dumpleton, below are my observations.</p>
  
  <p>This is the Flask server log which I am running in the pods for information.</p>
  
  <pre><code>* Serving Flask app "wsgi" (lazy loading)
   * Environment: production
     WARNING: This is a development server. Do not use it in a production deployment.
     Use a production WSGI server instead.
   * Debug mode: off
   * Running on http://127.0.0.1:5000/  (Press CTRL+C to quit)
  127.0.0.1 - - [14/Nov/2019 04:54:53] "GET / HTTP/1.1" 200 -
  127.0.0.1 - - [14/Nov/2019 04:55:05] "GET / HTTP/1.1" 200 -
  </code></pre>
  
  <blockquote>
    <p>Is your pod listening on external interfaces on pod 8080?</p>
  </blockquote>
  
  <p>If I understand question correctly, my intention here is just to communicate between pods via clusterIP service. I am not looking for accessing pods from external interfaces(other projects or through web urls as load balancer service)</p>
  
  <blockquote>
    <p>If you get into the pod, can you do curl $HOSTNAME:8080?</p>
  </blockquote>
  
  <p>Yes, if I am running as <code>localhost</code> or <code>127.0.0.1</code>, I am getting response from the same pod where I run this as expected.</p>
  
  <pre><code>(app-root) sh-4.2$ curl http://127.0.0.1:5000/  
  Hello World!
  
  (app-root) sh-4.2$ curl http://localhost:5000/  
  Hello World!
  </code></pre>
  
  <p>But, if I tried with <code>my-web-app</code> or <code>service IP</code>(clusterIP). I am not getting response.</p>
  
  <pre><code>(app-root) sh-4.2$ curl http://172.30.216.112:5000/
  curl: (7) Failed connect to 172.30.216.112:5000; No route to host
  
  (app-root) sh-4.2$ curl my-web-app:8080
  curl: (7) Failed connect to my-web-app:8080; Connection refused
  
  (app-root) sh-4.2$ curl http://my-web-app:8080/
  curl: (7) Failed connect to my-web-app:8080; Connection refused
  </code></pre>
  
  <p>With pod IP also I am not getting response.</p>
  
  <pre><code>(app-root) sh-4.2$ curl http://172.20.49.150:5000/
  curl: (7) Failed connect to 172.20.49.150:5000; Connection refused
  
  (app-root) sh-4.2$ curl 172.20.49.150
  curl: (7) Failed connect to 172.20.49.150:80; Connection refused
  </code></pre>