<p>I deploy a kubernetes cluster following the guide: <a href="https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/" rel="nofollow noreferrer">https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/</a>. It basically uses hypriotOS and kubernetes from the debian repository.</p>

<p>After the deployment, all the pods were running and no faults were shown. However, the dns server was not working properly on the worker node.</p>

<p><strong>master</strong></p>

<pre><code>$ kubectl -n kube-system get svc   
NAME                   CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kube-dns               10.96.0.10      &lt;none&gt;        53/UDP,53/TCP   34m
kubernetes-dashboard   10.103.97.112   &lt;nodes&gt;       80:30518/TCP    31m 

# I installed the dnsutils to have the dig command
$ dig @10.96.0.10 || echo "FAIL"
# shows a valid response (note that we are not resolving anything)
</code></pre>

<p><strong>worker</strong></p>

<pre><code>$ dig @10.96.0.10 || echo "FAIL"
....
FAIL
</code></pre>

<p>It turn out that the answer was in one of the <a href="https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/#comment-3142210207" rel="nofollow noreferrer">comments</a> from , but it was not clear that this was my issue.</p>

<p>As the author of the comment stated is due to the iptables policies from Docker versions > 1.13.</p>

<p>To solve it, execute the following on both nodes:</p>

<pre><code>sudo iptables -A FORWARD -i cni0 -j ACCEPT
sudo iptables -A FORWARD -o cni0 -j ACCEPT
</code></pre>
