You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
InterLink aims to provide an abstraction for the execution of a Kubernetes pod on any remote resource capable of managing a Container execution lifecycle.
7
-
We target to facilitate the development of provider specific plugins, so the resource providers can leverage the power of virtual kubelet without a black belt in kubernetes internals.
7
+
InterLink aims to provide an abstraction for the execution of a Kubernetes pod on any remote resource capable of managing
8
+
a Container execution lifecycle. We target to facilitate the development of provider specific plugins, so the resource
9
+
providers can leverage the power of virtual kubelet without a black belt in kubernetes internals.
8
10
9
11
The project consists of two main components:
10
12
11
-
-__A Kubernetes Virtual Node:__ based on the [VirtualKubelet](https://virtual-kubelet.io/) technology. Translating request for a kubernetes pod execution into a remote call to the interLink API server.
12
-
-__The interLink API server:__ a modular and pluggable REST server where you can create your own Container manager plugin (called sidecars), or use the existing ones: remote docker execution on a remote host, singularity Container on a remote SLURM batch system. This repo aims to maintain the SLURM sidecar as a standalone plugin.
13
+
-__A Kubernetes Virtual Node:__ based on the [VirtualKubelet](https://virtual-kubelet.io/) technology.
14
+
Translating request for a kubernetes pod execution into a remote call to the interLink API server.
15
+
-__The interLink API server:__ a modular and pluggable REST server where you can create your own Container manager plugin
16
+
(called sidecars), or use the existing ones: remote docker execution on a remote host, singularity Container on
17
+
a remote SLURM batch system. This repository aims to maintain the SLURM sidecar as a standalone plugin.
13
18
14
-
The project got inspired by the [KNoC](https://github.com/CARV-ICS-FORTH/knoc) and [Liqo](https://github.com/liqotech/liqo/tree/master) projects, enhancing that with the implemention a generic API layer b/w the virtual kubelet component and the provider logic for the container lifecycle management.
19
+
The project got inspired by the [KNoC](https://github.com/CARV-ICS-FORTH/knoc) and
20
+
[Liqo](https://github.com/liqotech/liqo/tree/master) projects, enhancing that with the implemention a generic API
21
+
layer b/w the virtual kubelet component and the provider logic for the container lifecycle management.
15
22
16
23
## :electron: Usage
17
24
18
25
### :bangbang: Requirements
26
+
19
27
-__[Our Kubernetes Virtual Node and the interLink API server](https://github.com/interTwin-eu/interLink)__
28
+
20
29
-__[The Go programming language](https://go.dev/doc/install)__ (to build binaries)
Note: if you want a quick start setup (using a Docker container), Go is not necessary
24
34
25
35
### :fast_forward: Quick Start
36
+
26
37
Just run:
38
+
27
39
```bash
28
40
cd docker && docker compose up -d
29
41
```
30
42
31
43
### :hammer: Building binaries
32
-
It is of course possible to use binaries as a standalone application. Just run
44
+
45
+
It is of course possible to use binaries as a standalone application. Just run
46
+
33
47
```bash
34
48
make all
35
49
```
36
-
and you will be able to find the built slurm-sd binary inside the bin directory. Before executing it, remember to check if the configuration file is correctly set according to your needs. You can find an example one under examples/config/InterLinkConfig.yaml. Do not forget to set the INTERLINKCONFIGPATH environment variable to point to your config.
50
+
51
+
and you will be able to find the built slurm-sd binary inside the bin directory. Before executing it, remember to check
52
+
if the configuration file is correctly set according to your needs. You can find an example one under examples/config/InterLinkConfig.yaml.
53
+
Do not forget to set the INTERLINKCONFIGPATH environment variable to point to your config.
37
54
38
55
### :pencil2: Annotations
56
+
39
57
It is possible to specify Annotations when submitting Pods to the K8S cluster. A list of all Annotations follows:
40
58
| Annotation | Description|
41
59
|--------------|------------|
@@ -48,15 +66,17 @@ It is possible to specify Annotations when submitting Pods to the K8S cluster. A
48
66
| slurm-job.vk.io/mpi-flags | Used to prepend "mpiexec -np $SLURM_NTASKS \*flags\*" to the Singularity Execution |
49
67
50
68
### :wrench: InterLink Config file
51
-
Detailed explanation of the InterLink config file key values. Edit the config file before running the binary or before building the docker image (`docker compose up -d --build --force-recreate` will recreate and re-run the updated image)
69
+
70
+
Detailed explanation of the InterLink config file key values. Edit the config file before running the binary or before
71
+
building the docker image (`docker compose up -d --build --force-recreate` will recreate and re-run the updated image)
52
72
| Key | Value |
53
73
|--------------|-----------|
54
74
| InterlinkURL | the URL to allow the Virtual Kubelet to contact the InterLink module. |
55
75
| SidecarURL | the URL to allow InterLink to communicate with the Sidecar module (docker, slurm, etc). Do not specify port here |
56
76
| InterlinkPort | the Interlink listening port. InterLink and VK will communicate over this port. |
57
77
| SidecarPort | the sidecar listening port. Sidecar and Interlink will communicate on this port. Set $SIDECARPORT environment variable to specify a custom one |
58
78
| SbatchPath | path to your Slurm's sbatch binary |
59
-
| ScancelPath | path to your Slurm's scancel binary |
79
+
| ScancelPath | path to your Slurm's scancel binary |
60
80
| CommandPrefix | here you can specify a prefix for the programmatically generated script (for the slurm plugin). Basically, if you want to run anything before the script itself, put it here. |
61
81
| ExportPodData | Set it to true if you want to export Pod's ConfigMaps and Secrets as mountpoints in your Singularity Container |
62
82
| DataRootFolder | Specify where to store the exported ConfigMaps/Secrets locally |
@@ -69,7 +89,9 @@ Detailed explanation of the InterLink config file key values. Edit the config fi
69
89
| ErrorsOnlyLogging | Specify if you want to get errors only on logs. True or false values only |
70
90
71
91
### :wrench: Environment Variables list
72
-
Here's the complete list of every customizable environment variable. When specified, it overwrites the listed key within the InterLink config file.
92
+
93
+
Here's the complete list of every customizable environment variable. When specified, it overwrites the listed key
94
+
within the InterLink config file.
73
95
74
96
| Env | Value |
75
97
|--------------|-----------|
@@ -85,4 +107,4 @@ Here's the complete list of every customizable environment variable. When specif
85
107
| SHARED_FS | set this env to "true" to save configmaps values inside files directly mounted to Singularity containers instead of using ENVS to create them later |
86
108
| CUSTOMKUBECONF | path to a service account kubeconfig |
87
109
| TSOCKS | true or false, to use tsocks library allowing proxy networking. Working on Slurm sidecar at the moment. Overwrites Tsocks. |
88
-
| TSOCKSPATH | path to your tsocks library. Overwrites TsocksPath. |
110
+
| TSOCKSPATH | path to your tsocks library. Overwrites TsocksPath. |
0 commit comments