Skip to content

Instantly share code, notes, and snippets.

@mosuka
Last active August 11, 2020 11:57
Show Gist options
  • Save mosuka/6f05e8399df040111937a80d8c07195f to your computer and use it in GitHub Desktop.
Save mosuka/6f05e8399df040111937a80d8c07195f to your computer and use it in GitHub Desktop.
Raspberry Pi setup
# step1 - initialize OS
$ export RASPBERRY_PI_HOSTNAME=raspberrypi001
$ touch /media/${USER}/boot/ssh
$ ls /media/${USER}/boot/ssh
$ sed -i -e "s/rootfstype=ext4/rootfstype=ext4 cgroup_enable=cpuset cgroup_memory=memory cgroup_memory=1/g" /media/${USER}/boot/cmdline.txt
$ cat /media/${USER}/boot/cmdline.txt
$ sudo sed -i -e "s/raspberrypi/${RASPBERRY_PI_HOSTNAME}/g" /media/${USER}/rootfs/etc/hostname
$ cat /media/${USER}/rootfs/etc/hostname
$ sudo sed -i -e "s/raspberrypi/${RASPBERRY_PI_HOSTNAME}/g" /media/${USER}/rootfs/etc/hosts
$ cat /media/${USER}/rootfs/etc/hosts
# step2 - install Kubernetes (master and worker)
$ slogin pi@raspberrypi001.local
$ sudo apt-get -y upgrade
$ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "${ID}")/gpg | sudo apt-key add -
$ echo "deb [arch=armhf] https://download.docker.com/linux/$(. /etc/os-release; echo "${ID}") $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get -y update
$ sudo apt-get -y install docker-ce
$ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
$ sudo apt-get -y update
$ sudo apt-get -y install kubelet kubeadm kubectl
# step3 - disable swap (master and worker)
$ slogin pi@raspberrypi001.local
$ sudo dphys-swapfile swapoff
$ sudo dphys-swapfile uninstall
$ sudo update-rc.d dphys-swapfile remove
# step4 - master setup (master)
$ slogin pi@raspberrypi001.local
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
$ mkdir -p ${HOME}/.kube
$ sudo cp -i /etc/kubernetes/admin.conf ${HOME}/.kube/config
$ sudo chown $(id -u):$(id -g) ${HOME}/.kube/config
$ kubectl apply -f <(curl -s https://raw.githubusercontent.com/coreos/flannel/v0.12.0/Documentation/kube-flannel.yml |sed 's/amd64/arm/g')
# step5 - worker setup (worker)
$ slogin pi@raspberrypi002.local
$ sudo kubeadm join --token xxxxxx.xxxxxxxx 10.0.1.22:6443 --discovery-token-ca-cert-hash sha256:xxxxxxxxx
# step6 - set labels (master)
$ kubectl label node raspberrypi002 node-role.kubernetes.io/worker=worker
$ kubectl label node raspberrypi003 node-role.kubernetes.io/worker=worker
$ kubectl label node raspberrypi004 node-role.kubernetes.io/worker=worker
$ kubectl label node raspberrypi005 node-role.kubernetes.io/worker=worker
$ kubectl label node raspberrypi006 node-role.kubernetes.io/worker=worker
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment