Mixed arch kubernetes cluster
My notes for running on Raspberry Pi 2 (32bit os), 3(64bit os) and amd64.
It probably wont make sense to you.
with reference to https://gist.github.com/elafargue/a822458ab1fe7849eff0a47bb512546f/,.
On the Pi;
Install hypriot OS (64) using the flash tool
boot it and then
curl -s 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 update -q && sudo apt-get install -qy kubeadm=1.10.5-00 kubectl=1.10.5-00 kubelet=1.10.5-00
I use NFS for storage so install that also
apt-get install nfs-common
Something about disabling CNI on the master as shown here; sudo sed -i '/KUBELET_NETWORK_ARGS=/d' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
https://gist.github.com/elafargue/a822458ab1fe7849eff0a47bb512546f/
Initialise the cluster but you need to increase the time out on the API starting up, i run this as soon as the yaml files appear:
sudo sed -i 's/failureThreshold: 8/failureThreshold: 20/g' /etc/kubernetes/manifests/kube-apiserver.yaml && \
sudo sed -i 's/initialDelaySeconds: [0-9]\+/initialDelaySeconds: 360/' /etc/kubernetes/manifests/kube-apiserver.yaml
then multi arch the kube proxy as mentioned here
Next up is multi arch flannel, use flannels yaml from their github repo
I then label all the arm nodes with arch.family=arm so you can deploy 32bit to 64bit archs using a node selector of arch.family: arm
I also use an internal (to the cluster) insecure registry so need to open that up to docker by
/etc/docker/daemon.json
{
“experimental”: true,
“insecure-registries” : [
“registry:30000”
]
}
— — -
Update: Feb 2021 — I have been using K3S for ages now and works much better for my usecase. I recomend you use it over full blown kubernetes.