Computing in the Kubernetes Framework
This repository contains some resources for getting started with OpenMPI and high-performance computing on Kubernetes. This accompanies a presentation given by Garrett Mills at the KU CRMDA on Docker, Kubernetes, and high-performance computing.
Get up and running.
If you want to follow along or try OpenMPI on Kubernetes out for yourself, you can get started by creating a virtual cluster on your machine with Minikube. Here's how to get set up:
- Install VirtualBox. Our test Kubernetes cluster will run on a collection of VMs, so we'll install VirtualBox to make that possible. Here's the download.
kubectl. This is the Kubernetes CLI tool. It's how you interface with Kubernetes. Grab it here.
- Install Minikube. Minikube is a software tool that creates a Kubernetes cluster with VMs on your local machine. This is an excellent tool for testing deployments. Get it here.
- Install Helm. Helm is a Kubernetes package manager used by the cluster framework. Here's the link.
- Clone this repository to your computer using Git:
git clone https://code.garrettmills.dev/garrettmills/k8s-hpc-demo
That's it! You're ready to start using the Kubernetes cluster on your computer.
From within the cloned repository's folder, run the
./setup.sh command. This will clone the
kube-openmpi repository and generate the SSH key used by OpenMPI.
Now, we can start the cluster by running the
./start_cluster.sh script. This will create the Kubernetes resources and start the cluster. If you have the
watch command line tool installed, it will open up the cluster status page so you can see when it's done initializing.
At this point, we have a fully-functional OpenMPI cluster. By default, the definitions provided in this repo will create 5 worker nodes. You can run commands on the cluster using the
./cluster_exec.sh script. For example:
$ ./cluster_exec.sh mpiexec --allow-run-as-root --hostfile /kube-openmpi/generated/hostfile -n 5 echo "Hello, world!" Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!
When you're finished with the cluster, stop it using the