kubernetes/cluster/images/hyperkube
k8s-merge-robot b8d000853e Merge pull request #21617 from luxas/hyperkube_for_arm
Automatic merge from submit-queue

Cross-build hyperkube and debian-iptables for ARM. Also add a flannel image

We have to be able to build complex docker images too on `amd64` hosts.
Right now we can't build Dockerfiles with `RUN` commands when building for other architectures e.g. ARM.

Resin has a tutorial about this here: https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/
But it's a bit clumsy syntax.

The other alternative would be running this command in a Makefile:
```
# This registers in the kernel that ARM binaries should be run by /usr/bin/qemu-{ARCH}-static
docker run --rm --privileged multiarch/qemu-user-static:register --reset
```
and 
```
ADD https://github.com/multiarch/qemu-user-static/releases/download/v2.5.0/x86_64_qemu-arm-static.tar.xz /usr/bin
```
Then the kernel will be able to differ ARM binaries from amd64. When it finds a ARM binary, it will invoke `/usr/bin/qemu-arm-static` first and lets `qemu` translate the ARM syscalls to amd64 ones.
Some code here: https://github.com/multiarch

WDYT is the best approach? If registering `binfmt_misc` in the kernels of the machines is OK, then I think we should go with that.
Otherwise, we'll have to wait for resin's patch to be merged into mainline qemu before we may use the code I have here now.

@fgrzadkowski @david-mcmahon @brendandburns @zmerlynn @ixdy @ihmccreery @thockin
2016-04-04 22:03:32 -07:00
..
Dockerfile Merge pull request #21617 from luxas/hyperkube_for_arm 2016-04-04 22:03:32 -07:00
etcd.json Add a flannel image for arm and amd64. Cross-build debian-iptables for arm, arm64 and ppc64le. Build and push hyperkube for arm on every release 2016-04-04 23:33:32 +03:00
kube-proxy.json Simplify local docker setup. 2015-12-11 15:53:44 +01:00
Makefile Add a flannel image for arm and amd64. Cross-build debian-iptables for arm, arm64 and ppc64le. Build and push hyperkube for arm on every release 2016-04-04 23:33:32 +03:00
master-multi.json Update the DNS template from cluster/addons/dns and combine into one file. Make DNS working on docker and docker-multinode 2016-02-25 21:59:07 +02:00
master.json Update the DNS template from cluster/addons/dns and combine into one file. Make DNS working on docker and docker-multinode 2016-02-25 21:59:07 +02:00
README.md Add a flannel image for arm and amd64. Cross-build debian-iptables for arm, arm64 and ppc64le. Build and push hyperkube for arm on every release 2016-04-04 23:33:32 +03:00
setup-files.sh Fix so setup-files don't recreate/invalidate certificates that already exist 2016-04-01 21:23:58 +03:00
teardown.sh Update some flags 2015-11-20 11:47:31 -08:00
turnup.sh Remove -v /dev:/dev from docker and docker-multinode 2016-02-07 22:15:20 +02:00

hyperkube

hyperkube is an all-in-one binary for the Kubernetes server components Also, it's very easy to run this hyperkube setup dockerized. See http://kubernetes.io/docs/getting-started-guides/docker/ for up-to-date commands.

hyperkube is built for multiple architectures and pushed on every release.

How to release by hand

# First, build the 
$ build/run.sh hack/build-cross.sh

# Build for linux/amd64 (default)
$ make push VERSION={target_version} ARCH=amd64
# ---> gcr.io/google_containers/hyperkube-amd64:VERSION
# ---> gcr.io/google_containers/hyperkube:VERSION (image with backwards-compatible naming)

$ make push VERSION={target_version} ARCH=arm
# ---> gcr.io/google_containers/hyperkube-arm:VERSION

If you don't want to push the images, run make or make build instead

Analytics