What is hyperkube?

I am trying to setup kubernetes in aws and following the guides at https://github.com/kubernetes/kubernetes/blob/master/docs/getting-started-guides/docker-multinode

I couldn't understand what is meant by hyperkube. Can someone please explain to me what it is and how does it work?

And another question I have is while running the command

sudo docker run \
    --volume=/:/rootfs:ro \
    --volume=/sys:/sys:ro \
    --volume=/dev:/dev \
    --volume=/var/lib/docker/:/var/lib/docker:rw \
    --volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
    --volume=/var/run:/var/run:rw \
    --net=host \
    --privileged=true \
    --pid=host \
    -d \
    gcr.io/google_containers/hyperkube:v${K8S_VERSION} \
    /hyperkube kubelet \
      --api-servers=http://localhost:8080 \
      --v=2 --address=0.0.0.0 --enable-server \
      --hostname-override=127.0.0.1 \
      --config=/etc/kubernetes/manifests-multi \
      --cluster-dns=10.0.0.10 \
      --cluster-domain=cluster.local

it is starting the one pod by default. From the command documentation, it looks like it is getting the pod manifest from the --config=/etc/kubernetes/manifests-multi attribute. But this directory is not present in my host. can somebody please tell me from where it is getting this pod manifest?


Kubernetes is a set of daemons/binaries:

  • kube-apiserver (AKA the master),
  • kubelet (start/stop containers, sync conf.),
  • kube-scheduler (resources manager)
  • kube-controller-manager (monitor RC, and maintain the desired state)
  • kube-proxy (expose services on each node)
  • kubectl (CLI)

The hyperkube binary is an all in one binary (in a way similar to busybox), combining all the previously separate binaries.

The following command:

hyperkube kubelet \
  --api-servers=http://localhost:8080 \
  --v=2 \
  --address=0.0.0.0 \
  --enable-server \
  --hostname-override=127.0.0.1 \
  --config=/etc/kubernetes/manifests-multi \
  --cluster-dns=10.0.0.10 \
  --cluster-domain=cluster.local

runs the daemon kubelet.


Kubernetes is a set of binaries

  1. kube-apiproxy
  2. kube-scheduler
  3. kube-control-manager
  4. kubelet
  5. kube-proxy

hyperkube is a wrapper for all these binaries. So once you deploy hyperkube, it will install all the binaries. No need to install those binary individually.