Luigi contribution to run Tasks as Kubernetes Jobs
Project description
Kubeluigi
Kubeluigi lets you run Luigi tasks as Pods in a Kubernetes Cluster. Kubeluigi is an update on Luigi's default KubernetesTask
.
Improvements over default luigi's contrib:
- Currently default K8s task on Luigi is outdated, it does not handle some edge cases but most importantly it is not a priority in Luigi, this makes it slow to get changes merged.
- Kubeluigi uses a non-deprecated kubernetes client library
- Kubeluigi handle edge error cases not handled by the stdlib KubernetesTask
- For most cases with only minor changes you should be able to unplug Luigi's default KubernetesJobTask and use Kubeluigi instead.
- Realtime logging from Kubernetes Tasks
- Logsfrom Kubernetes Tasks include a prefix which makes it easier to track the association of Job, Task, and Pod.
Moving from Luigi's default contrib
Just replace your imports of KubernetesJobTask
:
- from luigi.contrib.kubernetes import KubernetesJobTask
+ from kubeluigi import KubernetesJobTask
Full Kubeluigi Example
from kubeluigi import KubernetesJobTask
class Task(KubernetesJobTask):
container_name = "ubuntu:18.04"
@property
def limits(self):
r = {"requests": {
"memory": "50M",
"cpu": "1m"
}}
return r
@property
def cmd(self):
return "echo something && sleep 2 && echo after && sleep 5 && echo again"
@property
def namespace(self):
return "moussaka"
@property
def labels(self):
return {"my_label": "my_label_1"}
@property
def spec_schema(self):
print(self.container_name)
print(self.container_tag)
return {
"containers": [
{
"name": self.name,
"image": self.container_name + self.container_tag,
"args": ["/bin/bash", "-c", self.cmd],
"imagePullPolicy": "Always",
"resources": self.limits,
"env": [
{
"name": "my_env",
"value": "env"
}
]
}
],
}
@property
def name(self):
return 'dummytask'
## Logs
Kubeluigi's task logs include Job, Task, and Pod identifiers:
INFO:luigi-interface:JOB: dummytask-20211028031913-a5eb1d7e634b43c8 POD: dummytask-20211028031913-a5eb1d7e634b43c8-9cnmt: some echo message
Development
- local setup:
# install local package
pip install -e .
# testing
python setup.py test
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
kubeluigi-0.0.1.tar.gz
(8.0 kB
view details)
File details
Details for the file kubeluigi-0.0.1.tar.gz
.
File metadata
- Download URL: kubeluigi-0.0.1.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fdefb44c69591dcfba018a82eee98ddeaa0983a39412f70740446f1830ca764 |
|
MD5 | 906817d671011f703398a137e02cd60c |
|
BLAKE2b-256 | 3e4e53cf9fbe1fc9e1bfb79ad24fb8268554bd7e86bf038f4a7cc7d12b104d44 |