sigs.k8s.io/kueue@v0.6.2/site/static/examples/python/sample-job.py (about) 1 #!/usr/bin/env python3 2 3 import argparse 4 from kubernetes import config, client 5 6 # create_job.py 7 # This example will demonstrate full steps to submit a Job. 8 9 # Make sure your cluster is running! 10 config.load_kube_config() 11 crd_api = client.CustomObjectsApi() 12 api_client = crd_api.api_client 13 14 15 def get_parser(): 16 parser = argparse.ArgumentParser( 17 description="Submit Kueue Job Example", 18 formatter_class=argparse.RawTextHelpFormatter, 19 ) 20 parser.add_argument( 21 "--job-name", 22 help="generateName field to set for job", 23 default="sample-job-", 24 ) 25 parser.add_argument( 26 "--image", 27 help="container image to use", 28 default="gcr.io/k8s-staging-perf-tests/sleep:v0.1.0", 29 ) 30 parser.add_argument( 31 "--args", 32 nargs="+", 33 help="args for container", 34 default=["30s"], 35 ) 36 return parser 37 38 39 def generate_job_crd(job_name, image, args): 40 """ 41 Generate an equivalent job CRD to sample-job.yaml 42 """ 43 metadata = client.V1ObjectMeta( 44 generate_name=job_name, labels={"kueue.x-k8s.io/queue-name": "user-queue"} 45 ) 46 47 # Job container 48 container = client.V1Container( 49 image=image, 50 name="dummy-job", 51 args=args, 52 resources={ 53 "requests": { 54 "cpu": 1, 55 "memory": "200Mi", 56 } 57 }, 58 ) 59 60 # Job template 61 template = {"spec": {"containers": [container], "restartPolicy": "Never"}} 62 return client.V1Job( 63 api_version="batch/v1", 64 kind="Job", 65 metadata=metadata, 66 spec=client.V1JobSpec( 67 parallelism=1, completions=3, suspend=True, template=template 68 ), 69 ) 70 71 72 def main(): 73 """ 74 Run a job. 75 """ 76 parser = get_parser() 77 args, _ = parser.parse_known_args() 78 79 # Generate a CRD spec 80 crd = generate_job_crd(args.job_name, args.image, args.args) 81 batch_api = client.BatchV1Api() 82 print(f"📦️ Container image selected is {args.image}...") 83 print(f"⭐️ Creating sample job with prefix {args.job_name}...") 84 batch_api.create_namespaced_job("default", crd) 85 print( 86 'Use:\n"kubectl get queue" to see queue assignment\n"kubectl get jobs" to see jobs' 87 ) 88 89 90 if __name__ == "__main__": 91 main()