Setting up kubeadm cluster with ubuntu and pi

4/8/2018

I have been trying to bring up a kubernetes cluster with master on ubuntu (laptop) and worker node on pi3 using kubedm.

All the installations on both machines went well. After running:

kubeadm init --ignore-preflight-errors Swap --pod-network-cidr=10.244.0.0/16

and setting up flannel:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Master node comes up perfectly.

enter image description here

However when I run the kubeadm join command, the worker node shows successfully joined but the weave-net and kube-proxy throws CrashLoopBackOff

kubeadm join 192.168.1.103:6443 --token <<token value>> --discovery-token-ca-cert-hash sha256:<<hash value>>

Worker node has joined the cluster:

enter image description here

CrashLoopBackOff Error:

enter image description here

and kube-proxy logs:

kubectl -n kube-system logs kube-proxy-8ffsh

gives standard_init_linux.go:190: exec user process caused "exec format error"

Can somebody please help as to where the problem could be? Any help is appreciated.

-- Sanat Rohatgi
kubeadm
kubernetes
raspberry-pi
raspbian
ubuntu-16.04

1 Answer

4/9/2018

In theory, everything is almost ready for clouds in the future - mixed environments of ARM computing instances and amd64 compatible architecture for managing purposes. Moreover, golang seamlessly produces binaries for the ARM, so I was thinking that it is out-of-the-box and one step forward to personal clouds at home. But nope.

You probably faced the problem with executing x64 binaries or shared modules like networking on ARM compute node or vice versa.

As far as I know for this particular moment, the running Kubernetes and the related products like Rancher are not working as expected in the mixed environment.

Even if you buy enterprise VPS/bare metal with Docker built for ARM's, cluster will not work when mixed with another architecture.

You need to be patient for a while and consider compiling/building every module and helper by yourself from the source codes, especially for the ARM side. It may help. It is a hard candy and consumes a lot of time due to limited ARM performance.

Another solution is to have local registries with any required dockers images preinstalled to avoid pulling them from another (default) registries.

-- d0bry
Source: StackOverflow