<p>it is possible to connect to internal kubernetes service from local network? for example I have vm outside kubernetes cluster but on the same network as kubernetes cluster (I can ping the private node ip from my vm), and from that vm I want to connect to internal kubernetes service like <a href="http://sample-service.default.svc.cluster.local" rel="nofollow noreferrer">http://sample-service.default.svc.cluster.local</a> from local network</p>
<p>I've tried follow this tutorial <a href="https://blog.heptio.com/configuring-your-linux-host-to-resolve-a-local-kubernetes-clusters-service-urls-a8c7bdb212a7" rel="nofollow noreferrer">https://blog.heptio.com/configuring-your-linux-host-to-resolve-a-local-kubernetes-clusters-service-urls-a8c7bdb212a7</a> but still not working</p>

Aditia Rahman
<p>Yes it is possible, you need to change the type of your service to <code>NodePort</code>: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/services-networking/service/#nodeport</a>.
Then your service will be reachable from any of your Kubernetes worker nodes, using its IP address and the <code>NodePort</code> (&gt;30000) displayed by command below.</p>
<p>For example:</p>
<pre class="lang-sh prettyprint-override"><code>$ kubectl get svc parse-server 
NAME           TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
parse-server   NodePort   10.96.139.142   &lt;none&gt;        1337:31013/TCP   17h

$ kubectl get nodes -o wide
NAME                 STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                                     KERNEL-VERSION    CONTAINER-RUNTIME
...
kind-worker2         Ready    &lt;none&gt;   42h   v1.19.1   172.18.0.2    &lt;none&gt;        Ubuntu Groovy Gorilla (development branch)   4.15.0-1101-oem   containerd://1.4.0
</code></pre>
<p>Then service <code>parse-server</code> is reachable from the local network using:</p>
<pre class="lang-sh prettyprint-override"><code>$ curl http://172.18.0.2:31013
&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
...
</code></pre>
<p><code>NodePort</code> is the easiest way to expose service outside of a Kubernetes cluster, but if you need more advanced features, like routing by url path or hostname, you need to investigate on ingress: <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/services-networking/ingress/</a>.</p>
