基于Kubernetes Python SDK实现Job创建
在已建好的Kubernetes开发环境云平台上。使用Kubernetes python SDK的"kubernetes"Python库,在/root目录下,创建sdk_job_manager.py文件,要求编写python代码,代码实现以下任务:
① 编写Python程序实现Job资源的创建。Job配置信息如下。如果同名Job存在,先删除再创建。
② 创建完成后,查询该Job的详细信息,执行结果控制台输出,以json格式展示。
Job创建yaml的信息如下:
shell
vi spec-pi-job.yaml
yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
imagePullPolicy: IfNotPresent
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
shell
[root@master ~]# cp /root/.kube/config .
[root@master ~]# ctr -n k8s.io images import image.tar
[root@master ~]# vi sdk_job_manager.py
python
import json
import os
import yaml
from kubernetes import client, config
from os import path
class job_manager():
def __init__(self, config_file):
config.load_kube_config(config_file)
self.api = client.BatchV1Api()
def create_job(self, yamlFile):
v1 = self.api
fileNamePath = os.path.split(os.path.realpath(__file__))[0]
yamlPath = os.path.join(fileNamePath, yamlFile)
print("-------create job-------------")
with open(yamlPath, encoding="utf8") as f:
result = yaml.safe_load(f)
resp = v1.create_namespaced_job(namespace="default",body=result)
print(resp)
def get_job(self):
v1 = self.api
print("-------read job-------------")
resp = v1.read_namespaced_job(name="pi", namespace="default")
print(resp)
def delete_job(self):
v1 = self.api
resp = v1.delete_namespaced_job(name="pi", namespace="default", propagation_policy='Background',)
print(resp)
if __name__ == '__main__':
job_manager(config_file="config").create_job(yamlFile="spec-pi-job.yaml")
job_manager(config_file="config").get_job()
shell
[root@master ~]# python3 sdk_job_manager.py
------------------------------------------------执行结果----------------------------------------------------------
-------create job-------------
{'api_version': 'batch/v1',
'kind': 'Job',
'metadata': {'annotations': None,
'cluster_name': None,
'creation_timestamp': datetime.datetime(2023, 8, 15, 5, 44, 32, tzinfo=tzlocal()),
.......
'name': 'pi',
'namespace': 'default',
'owner_references': None,
'resource_version': '67328',
'self_link': None,
'uid': 'd68f1112-a523-4846-836f-c69e3d96b159'},
.......