Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

Fresh Espresso & Open Source Cloud


I have a passion for all things open source. I live in Ipswich MA and work for Red Hat, on the fabric8 project. Fabric8 is a cloud micro-services platform so you can deploy your applications to an all open source cloud. I kayak on the Atlantic Ocean along the coastal North East from Massachusetts to Maine whenever I can.

How to Compile Kubernetes for Raspberry Pi ARM

1. Golang on Pi (optional)

If you have a Linux or OSX machine you can simply compile the Kubernetes Go libraries for ARM on that, but if you want to can install Golang one the Pi too. For that run

    apt-get update
    apt-get upgrade
    apt-get install gcc apt-get install make
    git clone https://go.googlesource.com/go
    cd go git fetch --all
    git checkout go1.4.3
    cd src ./all.bash

2. Compile Kubernetes for ARM

To compile Kubernetes for arm you need to checkout the Kubernetes from git and update he client and service compile targets which I have already done for you if you checkout https://github.com/Project31/kubernetes/. The compilation requires a Docker daemon, so on OSX use boot2docker, for example

boot2docker start

with output:

Waiting for VM and Docker daemon to start...
.............oooo
Started.
Writing /Users/kstam/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/kstam/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/kstam/.boot2docker/certs/boot2docker-vm/key.pem

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_HOST=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/kstam/.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1

Set the required system parameters and now to compile the binaries simply run

    git clone git@github.com:Project31/kubernetes.git
    cd kubernetes/build
    ./run.sh hack/build-cross.sh

This will output

+++ [1204 10:50:30] Verifying Prerequisites....
+++ [1204 10:50:31] Building Docker image kube-build:cross.
+++ [1204 10:50:34] Building Docker image kube-build:build-f8d233d305.
+++ [1204 10:50:39] Running build command....
+++ [1204 15:50:41] Multiple platforms requested, but available 2G < threshold 11G, building platforms in serial
+++ [1204 15:50:41] Building go targets for linux/arm:
    cmd/kube-proxy
    cmd/kube-apiserver
    cmd/kube-controller-manager
    cmd/kubelet
    cmd/kubemark
    cmd/hyperkube
    cmd/linkcheck
    plugin/cmd/kube-scheduler
+++ [1204 15:51:11] Building go targets for linux/amd64:
    cmd/kube-proxy
    cmd/kube-apiserver
    cmd/kube-controller-manager
    cmd/kubelet
    cmd/kubemark
    cmd/hyperkube
    cmd/linkcheck
    plugin/cmd/kube-scheduler
+++ [1204 15:51:40] Multiple platforms requested, but available 2G < threshold 11G, building platforms in serial
+++ [1204 15:51:40] Building go targets for linux/amd64:
    cmd/kubectl
    cmd/integration
    cmd/gendocs
    cmd/genkubedocs
    cmd/genman
    cmd/mungedocs
    cmd/genbashcomp
    cmd/genconversion
    cmd/gendeepcopy
    cmd/genswaggertypedocs
    examples/k8petstore/web-server/src
    github.com/onsi/ginkgo/ginkgo
    test/e2e/e2e.test
+++ [1204 15:51:52] Building go targets for linux/386:
    cmd/kubectl
    cmd/integration
    cmd/gendocs
    cmd/genkubedocs
    cmd/genman
    cmd/mungedocs
    cmd/genbashcomp
    cmd/genconversion
    cmd/gendeepcopy
    cmd/genswaggertypedocs
    examples/k8petstore/web-server/src
    github.com/onsi/ginkgo/ginkgo
    test/e2e/e2e.test
+++ [1204 15:52:01] Building go targets for linux/arm:
    cmd/kubectl
    cmd/integration
    cmd/gendocs
    cmd/genkubedocs
    cmd/genman
    cmd/mungedocs
    cmd/genbashcomp
    cmd/genconversion
    cmd/gendeepcopy
    cmd/genswaggertypedocs
    examples/k8petstore/web-server/src
    github.com/onsi/ginkgo/ginkgo
    test/e2e/e2e.test
+++ [1204 15:52:10] Building go targets for darwin/amd64:
    cmd/kubectl
    cmd/integration
    cmd/gendocs
    cmd/genkubedocs
    cmd/genman
    cmd/mungedocs
    cmd/genbashcomp
    cmd/genconversion
    cmd/gendeepcopy
    cmd/genswaggertypedocs
    examples/k8petstore/web-server/src
    github.com/onsi/ginkgo/ginkgo
    test/e2e/e2e.test
+++ [1204 15:52:20] Building go targets for darwin/386:
    cmd/kubectl
    cmd/integration
    cmd/gendocs
    cmd/genkubedocs
    cmd/genman
    cmd/mungedocs
    cmd/genbashcomp
    cmd/genconversion
    cmd/gendeepcopy
    cmd/genswaggertypedocs
    examples/k8petstore/web-server/src
    github.com/onsi/ginkgo/ginkgo
    test/e2e/e2e.test
+++ [1204 15:52:29] Building go targets for windows/amd64:
    cmd/kubectl
    cmd/integration
    cmd/gendocs
    cmd/genkubedocs
    cmd/genman
    cmd/mungedocs
    cmd/genbashcomp
    cmd/genconversion
    cmd/gendeepcopy
    cmd/genswaggertypedocs
    examples/k8petstore/web-server/src
    github.com/onsi/ginkgo/ginkgo
    test/e2e/e2e.test
+++ [1204 15:52:39] Placing binaries
+++ [1204 10:52:56] Running build command....
+++ [1204 10:52:58] Output directory is local.  No need to copy results out.

and the binaries for arm can be found in _output/dockerized/bin/linux/arm.

-rwxr-xr-x  1 kstam  admin  36378096 Dec  4 10:52 e2e.test
-rwxr-xr-x  1 kstam  admin  28074776 Nov 12 14:26 genbashcomp
-rwxr-xr-x  1 kstam  admin  23070656 Nov 12 14:25 genconversion
-rwxr-xr-x  1 kstam  admin  23064640 Nov 12 14:25 gendeepcopy
-rwxr-xr-x  1 kstam  admin  28075952 Nov 12 14:26 gendocs
-rwxr-xr-x  1 kstam  admin  49536096 Nov 12 14:25 genkubedocs
-rwxr-xr-x  1 kstam  admin  28088896 Nov 12 14:26 genman
-rwxr-xr-x  1 kstam  admin  11703416 Nov 12 14:25 genswaggertypedocs
-rwxr-xr-x  1 kstam  admin   7626288 Dec  4 10:52 ginkgo
-rwxr-xr-x  1 kstam  admin  49826704 Nov 12 14:20 hyperkube
-rwxr-xr-x  1 kstam  admin  50032864 Nov 12 14:26 integration
-rwxr-xr-x  1 kstam  admin  41280520 Dec  4 10:51 kube-apiserver
-rwxr-xr-x  1 kstam  admin  35882152 Dec  4 10:51 kube-controller-manager
-rwxr-xr-x  1 kstam  admin  25615024 Nov 12 14:20 kube-proxy
-rwxr-xr-x  1 kstam  admin  24984232 Dec  4 10:51 kube-scheduler
-rwxr-xr-x  1 kstam  admin  28069864 Nov 12 14:26 kubectl
-rwxr-xr-x  1 kstam  admin  40450728 Nov 12 14:20 kubelet
-rwxr-xr-x  1 kstam  admin  39144744 Nov 12 14:20 kubemark
-rwxr-xr-x  1 kstam  admin   2764048 Nov 12 14:20 linkcheck
-rwxr-xr-x  1 kstam  admin   2933872 Nov 12 14:25 mungedocs
-rwxr-xr-x  1 kstam  admin   5572640 Nov 12 14:25 src

These binaries are simply uploaded to: https://github.com/Project31/kubernetes-arm from where they will be downloaded during a Kubernetes master or node installation.


About the author

Kurt Stam


Discussions

comments powered by Disqus