<p>I noticed, and I cannot explain, that some services have</p>

<pre><code>NAME      TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
web       NodePort   10.104.133.249   &lt;none&gt;        8080:31637/TCP   12m
</code></pre>

<p>the PORT(S) sections looks like this<code>8080:31637/TCP</code>. But this service</p>

<pre><code>NAME                            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE    SELECTOR                                                         
grafana                         ClusterIP   10.109.88.206    &lt;none&gt;        80/TCP     84s    app=grafana,release=grafana
</code></pre>

<p>Only has <code>80/TCP</code>. What exactly is the difference between these services? And what exactly does the port <code>31637</code> do?</p>

Jeanluca Scaljeri
<p><a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">Service</a> abstract way to expose an application running on a set of Pods as a network service. 
With ClusterIP, services are reachable by pods/services in the cluster but cannot accessible from outside network whereas NodePort, exposed a service on a random port between range 30000-32767 which is basically map to port inside your cluster. </p>

<p>In your case <code>web</code> service is exposed as type NodePort and you can access it from outside on port 31637 whereas you could not able to access <code>grafana</code> service as it is not exposed to outside network.</p>

<p>Check this thread, <a href="https://stackoverflow.com/questions/41509439/whats-the-difference-between-clusterip-nodeport-and-loadbalancer-service-types">What's the difference between ClusterIP, NodePort and LoadBalancer service types in Kubernetes?</a>  It will help to understand a concept and how it works.                      </p>
