本文给出Python SDK操作Kubernetes Job的更多示例代码,以及相关解释。pip install kubernetes
初始化from kubernetes.client import BatchV1Api
from kubernetes.config import load_kube_config
load_kube_config()
batch = BatchV1Api()
load_kube_config是从默认位置,也就是~/.kube/config加载配置。如果在其它位置,可以通过第一个参数传入其路径。
BatchV1Api()可以当做Job的客户端来用。命名上,Batch和Job是类似的概念,前者强调批量。
创建Job
以下来自官方样例job_crud.py。def create_job_object():
container = client.V1Container(
name="pi",
image="perl",
command=["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"])
template = client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(labels={"app": "pi"}),
spec=client.V1PodSpec(restart_policy="Never", containers=[container]))
spec = client.V1JobSpec(
template=template,
backoff_limit=4)
job = client.V1Job(
api_version="batch/v1",
kind="Job",
metadata=client.V1ObjectMeta(name=JOB_NAME),
spec=spec)
return job
def create_job(api_instance, job):
api_response = api_instance.create_namespaced_job(
body=job,
namespace="default")
print("Job created. status='%s'" % str(api_response.status))
虽然,根据官方教程这样的写法,也能得到可用的V1Job,拿去执行创建操作。但还是过于陌生和偏门,不如主流、常见的YAML方便、易读写。
这里该出两种更方便的做法。
直接使用YAML---
apiVersion: batch/v1
kind: Job