Submit a Run:ai Job via Kubernetes API¶
Warning
Researcher Kubernetes API is deprecated. See Cluster API for its replacement.
This article is a complementary article to the article on launching jobs via YAML. It shows how to use a programming language and Kubernetes API to submit jobs.
The article uses Python, though Kubernetes API is available in several other programming languages.
Submit a Run:ai Job¶
from __future__ import print_function
import kubernetes
from kubernetes import client, config
from pprint import pprint
import json
config.load_kube_config()
with client.ApiClient() as api_client:
namespace = 'runai-team-a' # Run:ai project name is prefixed by runai-
jobname = 'my-job'
username = 'john' # used in un-authenticated systems only
gpus = 1
body = client.V1Job(api_version="run.ai/v1", kind="RunaiJob")
body.metadata = client.V1ObjectMeta(namespace=namespace, name=jobname)
template = client.V1PodTemplate()
template.template = client.V1PodTemplateSpec()
template.template.metadata = client.V1ObjectMeta(labels = {'user' : username})
resource = client.V1ResourceRequirements(limits= {'nvidia.com/gpu' : gpus})
container = client.V1Container(
name=jobname, image='gcr.io/run-ai-demo/quickstart', resources=resource)
template.template.spec = client.V1PodSpec(
containers=[container], restart_policy='Never', scheduler_name='runai-scheduler')
body.spec = client.V1JobSpec(template=template.template)
pprint(body)
try:
api_instance = client.CustomObjectsApi(api_client)
api_response = api_instance.create_namespaced_custom_object(
"run.ai", "v1", namespace, "runaijobs", body)
pprint(api_response)
except client.rest.ApiException as e:
print("Exception when calling AppsV1Api->create_namespaced_job: %s\n" % e)