<p>I deployed a k3s cluster into 2 raspberry pi 4. One as a master and the second as a worker using the script k3s offered with the following options:</p>
<p>For the master node:</p>
<pre><code>curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC='server --bind-address 192.168.1.113 (which is the master node ip)' sh -
</code></pre>
<p>To the agent node:</p>
<pre><code>curl -sfL https://get.k3s.io | \
                K3S_URL=https://192.168.1.113:6443 \
                K3S_TOKEN=&lt;master-token&gt; \
                INSTALL_K3S_EXEC='agent' sh-
</code></pre>
<p>Everything seems to work, but <code>kubectl top nodes</code> returns the following:</p>
<pre><code>NAME          CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%     
k3s-master    137m         3%     1285Mi          33%         
k3s-node-01   &lt;unknown&gt;                           &lt;unknown&gt;               &lt;unknown&gt;               &lt;unknown&gt;
</code></pre>
<p>I also tried to deploy the k8s dashboard, according to what is written in <a href="https://rancher.com/docs/k3s/latest/en/installation/kube-dashboard/" rel="nofollow noreferrer">the docs</a> but it fails to work because it can't reach the metrics server and gets a timeout error:</p>
<pre><code>&quot;error trying to reach service: dial tcp 10.42.1.11:8443: i/o timeout&quot;
</code></pre>
<p>and I see a lot of errors in the pod logs:</p>
<pre><code>2021/09/17 09:24:06 Metric client health check failed: the server is currently unable to handle the request (get services dashboard-metrics-scraper). Retrying in 30 seconds.
2021/09/17 09:25:06 Metric client health check failed: the server is currently unable to handle the request (get services dashboard-metrics-scraper). Retrying in 30 seconds.
2021/09/17 09:26:06 Metric client health check failed: the server is currently unable to handle the request (get services dashboard-metrics-scraper). Retrying in 30 seconds.
2021/09/17 09:27:06 Metric client health check failed: the server is currently unable to handle the request (get services dashboard-metrics-scraper). Retrying in 30 seconds.
</code></pre>
<p>logs from the <code>metrics-server</code> pod:</p>
<pre><code>elet_summary:k3s-node-01: unable to fetch metrics from Kubelet k3s-node-01 (k3s-node-01): Get https://k3s-node-01:10250/stats/summary?only_cpu_and_memory=true: dial tcp 192.168.1.106:10250: connect: no route to host
E0917 14:03:24.767949       1 manager.go:111] unable to fully collect metrics: unable to fully scrape metrics from source kubelet_summary:k3s-node-01: unable to fetch metrics from Kubelet k3s-node-01 (k3s-node-01): Get https://k3s-node-01:10250/stats/summary?only_cpu_and_memory=true: dial tcp 192.168.1.106:10250: connect: no route to host
E0917 14:04:24.767960       1 manager.go:111] unable to fully collect metrics: unable to fully scrape metrics from source kubelet_summary:k3s-node-01: unable to fetch metrics from Kubelet k3s-node-01 (k3s-node-01): Get https://k3s-node-01:10250/stats/summary?only_cpu_and_memory=true: dial tcp 192.168.1.106:10250: connect: no route to host
</code></pre>

Assaf Sapir
<p>Moving this out of comments for better visibility.</p>
<hr />
<p>After creation of small cluster, I wasn't able to reproduce this behaviour and <code>metrics-server</code> worked fine for both nodes, <code>kubectl top nodes</code> showed information and metrics about both available nodes (thought it took some time to start collecting the metrics).</p>
<p>Which leads to troubleshooting steps why it doesn't work. Checking <code>metrics-server</code> logs is the most efficient way to figure this out:</p>
<pre><code>$ kubectl logs metrics-server-58b44df574-2n9dn -n kube-system
</code></pre>
<p>Based on logs it will be different steps to continue, for instance in comments above:</p>
<ul>
<li>first it was <code>no route to host</code> which is related to network and lack of possibility to resolve hostname</li>
<li>then <code>i/o timeout</code> which means route exists, but service did not respond back. This may happen due to firewall which blocks certain ports/sources, <code>kubelet</code> is not running (listens to port <code>10250</code>) or as it appeared for OP, there was an issue with <code>ntp</code> which affected certificates and connections.</li>
<li>errors may be different in other cases, it's important to find the error and based on it troubleshoot further.</li>
</ul>
