<p>I've installed kubernetes cluster with help of Kubespray.
Cluster having 3 Nodes (2 Master &amp; 1 Worker).
node1 - 10.1.10.110,
node2 - 10.1.10.111,
node3 - 10.1.10.112</p>
<pre class="lang-yaml prettyprint-override"><code>$ kubectl get nodes
NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    master   12d   v1.18.5
node2   Ready    master   12d   v1.18.5
node3   Ready    &lt;none&gt;   12d   v1.18.5
</code></pre>
<p>I deployed this pod in node1 (10.1.10.110) and exposed nodeport service as shown.</p>
<pre class="lang-yaml prettyprint-override"><code>NAMESPACE     NAME                                              READY   STATUS    RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES

default       pod/httpd-deployment-598596ddfc-n56jq             1/1     Running   0          7d21h   10.233.64.15   node1   &lt;none&gt;           &lt;none&gt;
---
NAMESPACE     NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE     SELECTOR

default       service/httpd-service               NodePort    10.233.16.84    &lt;none&gt;        80:31520/TCP             12d     app=httpd
</code></pre>
<p>Service description</p>
<pre class="lang-yaml prettyprint-override"><code>$ kubectl describe services -n default httpd-service
Name:                     httpd-service
Namespace:                default
Labels:                   &lt;none&gt;
Annotations:              &lt;none&gt;
Selector:                 app=httpd
Type:                     NodePort
IP:                       10.233.16.84
Port:                     &lt;unset&gt;  80/TCP
TargetPort:               80/TCP
NodePort:                 &lt;unset&gt;  31520/TCP
Endpoints:                10.233.64.15:80
Session Affinity:         None
External Traffic Policy:  Cluster
</code></pre>
<p>Question:
I can able to access the service from node1:31520 (where the pod actually deployed) but can't able to access the same service from other nodes (node2:31520 (or) node3:31520)</p>
<pre class="lang-sh prettyprint-override"><code>$curl http://10.1.10.110:31520
&lt;html&gt;&lt;body&gt;&lt;h1&gt;It Works!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;

but if I curl with other node IP, timed out response

$curl http://10.1.10.111:31520
curl (7): Failed connect to 10.1.10.111; Connection timed out

$curl http://10.1.10.112:31520
curl (7): Failed connect to 10.1.10.112; Connection timed out
</code></pre>
<p>Can anyone suggest what I am missing ?</p>

<p>Ideally you should be able to access a pod via NodePort using any of the nodes IP. If kube-proxy or CNI Plugin(calico etc) are not working properly in your cluster then it can cause the problem where pod is not reachable via a Nodes IP on which the Pod is not scheduled.</p>
<p>Check this related question <a href="https://stackoverflow.com/questions/46667659/kubernetes-cannot-access-nodeport-from-other-machines">kubernetes: cannot access NodePort from other machines</a></p>
