Just a heads up — this no longer works! We’ll have to go back to the drawing board to update.
I just bought three raspberry pi’s to attempt to cheaply increase the capacity of my home cluster (I’m building something awesome 😃 )… This is a quick write up on what I did and how I did.
I currently run rancher as my orchestration tool of choice. But first, I have to get docker installed on my pi’s.
I followed this guide by hypriot to get started.
Once I got the pi up and running, it was a bit of a challenge to get rancher-agent built for arm. Arm support in rancher is still experimental, so you can follow these instructions or download the pre-built images listed at the bottom.
If you don’t want to build all the required containers from scratch, you can just follow these simpler instructions on your arm device:
docker pull withinboredom/agent-instance:v0.8.3 docker pull withinboredom/agent:v1.0.2 docker tag withinboredom/agent:v1.0.2 rancher/agent:v1.0.2
Now that you’ve gotten everything downloaded, go ahead and copy the command rancher gives you to add a custom host.
Within a few seconds you should see it appear in your infrastructure tab and you can deploy containers to it. _When you see the network agent_ come online, jump back to your machine and run this, after it fails.
docker tag withinboredom/agent-instance:v0.8.3 rancher/agent-instance:v0.8.3
And bam, everything should work — well, anything that is compiled on an arm processor!
You may need to follow these instructions to be able to view logs and enter containers from the web:
docker exec -it rancher-agent bash # Then inside the container, run this cp /usr/bin/nsenter /var/lib/cattle/bin/nsenter
cadvisor is still broken for the moment … still trying to figure that out.
Build from scratch
On your arm device, we’ll need to build a few pieces from scratch. Depending on how powerful device you have, this may take awhile. First things first, you need to build s6-libs. This is pretty straight forward:
git clone https://github.com/imikushin/s6-builder cd s6-builder ./build.arm.sh docker run -it rancher/s6-builder:v188.8.131.52_arm /opt/build.sh
Once you’ve built s6 for arm, you now need to build the rancher-instance:
# We need to build agent-instance git clone https://github.com/rancher/agent-instance.git cd agent-instance/ git remote add imikushin https://github.com/imikushin/agent-instance.git # You can change the version number to reflect what you actually need git checkout v0.8.3 git fetch imikushin git merge imikushin/arm --no-ff ./build-image.sh cd .. # Now we need to build the actual agent git clone https://github.com/rancher/rancher.git cd rancher/agent git remote add imikushin https://github.com/imikushin/rancher.git git fetch imikushin git merge imikushin/multiarch-hosts # Change the from line at the top of the Dockerfile to armhf/ubuntu:14.04 ./build-image.sh # Now tag the resulting images for release (You can skip this) docker tag rancher/agent-instance:v0.8.3_arm withinboredom/agent-instance:v0.8.3 docker tag rancher/agent:v1.0.2_arm withinboredom/agent:v1.0.2 docker push withinboredom/agent-instance:v0.8.3 docker push withinboredom/agent:v1.0.2 # And tag for running docker tag rancher/agent-instance:dev rancher/agent-instance:v0.8.3 # Now go execute the steps from the Solution section above