基于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'},
.......
相关推荐
言乐69 分钟前
Python基于关键词分拣快递(适用于电商与货运代理等)
开发语言·python·django·virtualenv·pygame
代码方舟9 分钟前
Python数据工程:利用天远名下车辆车牌查询A优化个人债务重组与清偿能力评估合规体验
人工智能·python
卷无止境9 分钟前
当AI写代码遇见Rust为什么会卡壳
后端·python
栈溢出了14 分钟前
LangGraph State、节点与动态路由学习笔记
python
用户0190275816118 分钟前
A 股代码后缀 .SH/.SZ/.BJ 怎么区分?Python 怎么统一处理沪深京港美股代码?
python
迅猛龙办公室37 分钟前
python实现简单进度条
java·前端·python
郝学胜_神的一滴40 分钟前
AI 编程智能体 06:用Anaconda搞定Python多环境,彻底告别版本兼容灾难
人工智能·python
清水白石00841 分钟前
Python 对象模型深度解析:从“一切皆对象”到 id、type、isinstance 底层机制与小整数缓存原理
开发语言·python·缓存
墨家句子42 分钟前
4G 显存老显卡怎么跑模型:llama.cpp 加 GGUF 配置
linux·后端
for_ever_love__1 小时前
Python 进阶——迭代器、生成器、装饰器与 asyncio
python·装饰器·生成器·大模型开发