<p>I've deployed a small K3S cluster with a master and two workers:</p>
<p>The VMs were made with <code>Multipass</code>:</p>
<pre><code>$ multipass ls
Name                    State             IPv4             Image
master-node             Running           10.200.68.230    Ubuntu 20.04 LTS
                                          10.42.0.0
                                          10.42.0.1
worker01                Running           10.200.68.67     Ubuntu 20.04 LTS
                                          10.42.1.0
                                          10.42.1.1
worker02                Running           10.200.68.227    Ubuntu 20.04 LTS
                                          10.42.2.0
                                          10.42.2.1
</code></pre>
<p>The cluster was made with <code>k3sup</code>:</p>
<pre><code>$ kubectl get node
NAME          STATUS   ROLES                       AGE     VERSION
master-node   Ready    control-plane,etcd,master   13m     v1.21.3+k3s1
worker01      Ready    &lt;none&gt;                      10m     v1.21.3+k3s1
worker02      Ready    &lt;none&gt;                      9m46s   v1.21.3+k3s1
</code></pre>
<p>Workers are all labelled with <code>ols.role=worker</code>.</p>
<p>I'd like to install a <code>NodeRed</code> service on the workers nodes. I've used the following commands:</p>
<pre><code>helm repo add k8s-at-home https://k8s-at-home.com/charts/
helm repo update
helm install node-red k8s-at-home/node-red --set nodeSelector.&quot;ols\.role&quot;=worker
export POD_NAME=$(kubectl get pods --namespace default -l &quot;app.kubernetes.io/name=node-red,app.kubernetes.io/instance=node-red&quot; -o jsonpath=&quot;{.items[0].metadata.name}&quot;)
while [[ $(kubectl get node $POD_NAME -o 'jsonpath={..status.conditions[?(@.type==&quot;Running&quot;)].status}') != &quot;True&quot; ]]; do echo &quot;waiting for pod&quot; &amp;&amp; sleep 1; done
kubectl port-forward $POD_NAME 8080:1880&amp;
</code></pre>
<p>The service is supposed to be running on port 8080.</p>
<p>Pod's logs look ok:</p>
<pre><code>$ kubectl logs $POD_NAME

&gt; node-red-docker@1.3.5 start /usr/src/node-red
&gt; node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS &quot;--userDir&quot; &quot;/data&quot;

29 Jul 08:20:12 - [info]

Welcome to Node-RED
===================

29 Jul 08:20:12 - [info] Node-RED version: v1.3.5
29 Jul 08:20:12 - [info] Node.js  version: v10.24.1
29 Jul 08:20:12 - [info] Linux 5.4.0-80-generic x64 LE
29 Jul 08:20:12 - [info] Loading palette nodes
29 Jul 08:20:12 - [info] Settings file  : /data/settings.js
29 Jul 08:20:12 - [info] Context store  : 'default' [module=memory]
29 Jul 08:20:12 - [info] User directory : /data
29 Jul 08:20:12 - [warn] Projects disabled : editorTheme.projects.enabled=false
29 Jul 08:20:12 - [info] Flows file     : /data/flows.json
29 Jul 08:20:12 - [warn]

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

29 Jul 08:20:12 - [info] Server now running at http://127.0.0.1:1880/
29 Jul 08:20:12 - [info] Starting flows
29 Jul 08:20:12 - [info] Started flows
</code></pre>
<p>When I try to reach the webpage (<code>http://192.168.1.14:8080</code> or even <code>http://127.0.0.1:1880/</code>), the server responds an error: <code>ERR_CONNECTION_REFUSED</code></p>
<p>The services should be running:</p>
<pre><code>$ kubectl get services
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.43.0.1     &lt;none&gt;        443/TCP    32m
node-red     ClusterIP   10.43.18.33   &lt;none&gt;        1880/TCP   26m
</code></pre>
<p>Is there something else to do to make it work ?</p>

<p>Since your service is Cluster Ip you can not access the service out of Kubernetes cluster.</p>
<p>You have to expose your service as <strong>Node port</strong> or <strong>Loadbalancer</strong>.</p>
<p><a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/services-networking/service/</a></p>
<p>however, for testing and debugging locally you can use this command :</p>
<pre><code>kubectl port-forward svc/node-red -n &lt;replace-namespace-name&gt; 1880:1880
</code></pre>
<p>once command running open the browser and open URL</p>
<pre><code>HTTP://localhost:1880
</code></pre>
