Turning multiple end user machines (PCs, Macs, RPi ... etc) into one giant k8s cluster

8/21/2018

I am new to kuberenetes.

is it possible to turn every end user machine (PCs, Macs, RPi ... etc) who with full consent downloaded my electron research app that should turn their machines into nodes that ultimately comprise a k8s cluster which then i can run kubeflow.org on to do ML research?

Thanks

-- sbhamad
kubernetes

1 Answer

8/21/2018

Kubernetes relies on some container engine. Usually that's docker, there are efforts to create a common container interface for kubernetes and that's where CRI-O comes in, an abstraction that would allow any container engine to run underneath it.
That being said, containers "don't exist" they are a native abstraction in the linux kernel comprised of cgroups and namespaces and what that means is that the abstraction and isolation doesn't live in the hypervisor (which usually talks to the kernel) as is the case with regular virtual machines, but rather in the actual linux kernel.

MacOS uses its own kernel which, to the extent of my knowledge, doesn't support any sort of containers.
Windows does support containers via Hyper-V and i believe that windows server has a more native built-in support for them. See this link for a better explanation https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/ and also for kubernetes https://kubernetes.io/docs/getting-started-guides/windows/.

As far as Raspberry PI goes there is an ongoing effort that brought k8s to ARM see this link (https://github.com/luxas/kubernetes-on-arm). That being said, you need an entire cluster of raspberry pis to actually make that work, as it would require a lot of resources. One raspberry pi won't get you very far.

How to go about this? You need linux to run kubernetes. Everywhere.

If you want to create a "giant" kubernetes cluster your best bet is to use a virtualization technology for the PC that is running windows or for the Mac and create virtual machines that you can use as kubernetes nodes.

In short, you create virtual machines where there's no Linux and install kubernetes natively where there is.

Parallels, Veertu or plain Xhyve is a good way of running virtualization on MacOs.

VmWare or VirtualBox are good virtualizations for both windows and mac.

Libvirt and virtualbox are good solutions for linux virtualisation.

-- Victor Palade
Source: StackOverflow