基于Kubernetes Python SDK实现Job创建

基于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'},
.......
相关推荐
kebidaixu1 分钟前
BCU 平台 RS485 驱动适配:从 THVD1406 到 ISO3082
linux
大貔貅喝啤酒16 分钟前
Python Requests库教程
自动化测试·python·requests库
copyer_xyf1 小时前
LangChain 调用 LLM
后端·python·agent
copyer_xyf1 小时前
Prompt 组织管理
后端·python·agent
shimly1234562 小时前
python3 uvicorn 是啥?
python
CTA量化套保2 小时前
期货量化程序 time.sleep 卡死:天勤单线程与 deadline 替代
python·区块链
谢平康3 小时前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
GIS数据转换器3 小时前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
贤哥哥yyds3 小时前
GBK转UTF\-8编码自动转换工具 使用文档
python
数量技术宅3 小时前
2026量化前沿:从Reddit热帖到Python实战,如何用赫斯特指数(Hurst)狙击虚假突破?
开发语言·python