Kubernetes on Raspberry Pi II – Networking

After my last blog, I had thought I had this pretty much working.  Not really.  Once I got the api server and minion up and running I still needed to get networking running.  The suggestion in the kubeadm install instructions says to use Weave.  I know there are several networking plugins for Kubernetes, and I’ll be honest I don’t really know or understand the benefits to them.  What I did quickly realize was that Weave didn’t have any images for arm, everything was x86.  Once again Lucas Käldström (@kubernetesonarm) was able to help.  He pointed me to a yaml that would deploy a flannel compiled for arm assuming you replaced all the references to amd64 with arm.  This got flannel running, but now working.  The gory details are in a ticket I updated on flannel in GitHub.

To get this figured out I went through a few steps:

  1. The api server continued to complain that eth0 didn’t exist
  2. Since these are pi 3, they had wireless but I didn’t want wireless

Ubuntu MATE was naming network interfaces based on the card’s MAC address instead of eth0.  I don’t know if this was a red herring or not, but I figured I’d rather make sure so I followed these instructions to get it renamed to eth0.  I then followed these instructions to get wlan0 disabled.  Finally, I followed the instructions in the above GitHub ticket and everything was up and running.

A quick note about running this on Raspbian Jessie.  I couldn’t get it to work.  I thought it would, but when kubeadm started it seemed to be unable to communicate with Docker 1.12.1.

Thanks again Lucas for your help!  Now to get Unison running on arm…