raspbernetes

Hardware

Print List

Purchase List

Software

Download Raspbian

Flash with Etcher

Enable SSH with

touch /Volumes/boot/ssh

Eject the disk volume

sudo umount /Volumes/boot

Add ssh keys

ansible-playbook -i inventory auth_keys.yml --ask-pass --extra-vars='pubkey="$(echo ~/.ssh/id_ras.pub)" username="username"'

Run ansible script

ansible-playbook cluster.yml --extra-vars "password=NEW_PASSWORD kube_dest=PATH_TO_LOCAL_KUBECONFIG"

ADD KubeConfig Env Var

export KUBECONFIG=$HOME/.kube/config:raspbernetes.conf

List K8s Nodes

kubectl config use-context kubernetes
kubectl get nodes

Proxy Dashboard

kubectl proxy

Get token for dashboard

kubectl -n kube-system describe secrets \
   `kubectl -n kube-system get secrets | awk '/clusterrole-aggregation-controller/ {print $1}'` \
       | awk '/token:/ {print $2}'

Open Dashboard in browser: Dashboard

Scratch

Helm

On Master

  • install helm binary
  • add raspi tiller with
helm init --tiller-image=jessestuart/tiller:v2.9.1
# not for prod (binds sys account to helm)
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

Setup NFS Server on PI

Fix Locale Setting

$ locale-gen en_US.UTF-8
sudo apt-get install nfs-kernel-server nfs-common

sudo systemctl enable nfs-kernel-server

# Add following like to /etc/exports
/mnt/extssd1/kube/ 192.168.1.*(rw,sync,no_subtree_check,no_root_squash)
sudo exportfs -a

install on controller $ helm install stable/nfs-client-provisioner --set nfs.server=x.x.x.x --set nfs.path=/exported/path