K8s newbe question: Getting minikube to run singularity-cri

1/21/2021

I am making my first steps into k8s land in general and using k8s with Singularity in particular, so just to be able to play around with the idea of Singularity as a service, I am trying to get Singularity-CRI to run under minkube, on my personal laptop (running Centos8 ).

I was able to install and setup sycri and kubelet, but I can't get minikube to use the cri. It seem to be able to run only with docker and some other preset drivers.

So did anyone manage to make minkube run over Singularity? Or maybe I should use another k8s implementation (I tried using sykube too, but it seem to be very unstable).

Many thanks,

Oren

-- Oren Shani
kubernetes
singularity-container

1 Answer

1/22/2021

Minikube is probably not the best choice, considering the way it is implemented. It typically runs as a VM (different drivers are available). There is also a docker driver which allows you to run Minikube in your existing docker environment, but it should be emphasized that it doesn't use your local docker as Container Runtime Environment, it runs the whole Minikube cluster as a container and it can come with different CREs inside e.g. you can select CRE different than Docker and still run it on Docker:

minikube start --container-runtime=cri-o --driver=docker

You can select cri-o but unfortunatelly you can not select singularity. As you can read here, currently the following Container Runtimes are supported:

The default container runtime in minikube is Docker. You can select it explicitly by using:

minikube start --container-runtime=docker

Other options available are:

You can always try setting up your Minikube with a different Container Runtime once it has been deployed and after:

minikube ssh

you can modify your environment and install Singularity and Singularity-CRI inside your Minikube VM (or container if it runs as docker container) and integrate it with your kubernetes cluster. Although it should be possible, I wouldn't recommend it at all. After first minikube delete your entire setup will gone, so it's definitely not meant to be used this way.

Somewhat more promising option seems to be running Minikube with none (bare-metal) driver. This should allow you configure it with your Singularity container runtime. But as you can read in docs, this option has some limitations and is recommended for advanced users only. Well, integrating your Minikube with a different, not supported out of the box, container runtime seems like a good advanced use case, doesn't it ? So it's probably worth giving it a try.

Another, more recommended option, is to integrate it with kubernetes cluster set up with kubeadm. I even found an article which describes such integration step by step.

-- mario
Source: StackOverflow