Giter Site home page Giter Site logo

soerenmetje / hpk Goto Github PK

View Code? Open in Web Editor NEW

This project forked from carv-ics-forth/hpk

0.0 0.0 0.0 1.1 MB

HPK allows running Kubernetes applications within HPC by translating deployments to Slurm and Singularity/Apptainer

License: Apache License 2.0

Shell 5.78% C++ 1.18% C 4.20% Java 0.75% Fortran 3.11% Go 80.34% Makefile 3.17% DTrace 0.70% Dockerfile 0.78%

hpk's Introduction

High-Performance Kubernetes

High-Performance Kubernetes (HPK), allows HPC users to run their own private "mini Clouds" on a typical HPC cluster. HPK uses a single container to run the Kubernetes control plane and a Virtual Kubelet Provider implementation to translate container lifecycle management commands from Kubernetes-native to Slurm/Apptainer.

To allow users to run HPK, the HPC environment should have Apptainer configured so that:

  • It allows users to run containers with --fakeroot.
  • It uses a CNI plug-in that hands over private IPs to containers, which are routable across cluster hosts (we use flannel and the flannel CNI plug-in).

In contrast to a typical Kubernetes installation at the Cloud:

  • HPK uses a pass-through scheduler, which assigns all pods to the single hpk-kubelet that represents the cluster. In practice, this means that all scheduling is delegated to Slurm.
  • All Kubernetes services are converted to headless. This avoids the need for internal, virtual cluster IPs that would need special handling at the network level. As a side effect, HPK services that map to multiple pods are load-balanced at the DNS level if clients support it.

HPK is a continuation of the KNoC project, a Virtual Kubelet Provider implementation that can be used to bridge Kubernetes and HPC environments.

Trying it out

First you need to configure Apptainer for HPK. The install-environment.sh script showcases how we implement the requirements in a single node for testing.

Once setup, compile the hpk-kubelet using make.

make build

Then you need to start the Kubernetes Master and hpk-kubelet seperately.

To run the Kubernetes Master:

make run-kubemaster

Once the master is up and running, you can start the hpk-kubelet:

make run-kubelet

Now you can configure and use kubectl:

export KUBE_PATH=~/.k8sfs/kubernetes/
export KUBECONFIG=${KUBE_PATH}/admin.conf
kubectl get nodes

In case that you experience DNS issues, you should retry starting the Kubernetes Master with:

export EXTERNAL_DNS=<your dns server>
make run-kubemaster

The above command will set CoreDNS to forward requests for external names to your DNS server.

Acknowledgements

We thankfully acknowledge the support of the European Commission and the Greek General Secretariat for Research and Innovation under the EuroHPC Programme through projects EUPEX (GA-101033975) and DEEP-SEA (GA-955606). National contributions from the involved state members (including the Greek General Secretariat for Research and Innovation) match the EuroHPC funding.

hpk's People

Contributors

fnikolai avatar chazapis avatar fnikol avatar malvag avatar soerenmetje avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.