基于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'},
.......
相关推荐
小猴子爱上树29 分钟前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频
jsons141 分钟前
autofs挂载
linux·服务器·网络
weixin_5386019742 分钟前
智能体测开Day31
开发语言·python
lbb 小魔仙1 小时前
Git + Python 项目工作流最佳实践:pre-commit、CI、CHANGELOG 自动化
git·python·ci/cd
探索云原生1 小时前
Kubernetes 官方出品:一个 Controller 搞定 Job 排队和资源配额
ai·云原生·kubernetes·scheduler
liwulin05061 小时前
【ollama】自定义结构化输出
linux·前端·数据库·ollama
dyxal1 小时前
最长公共子序列(LCS)
python·算法
你驴我1 小时前
WhatsApp Cloud API 速率限制下的令牌桶与退避策略实践
网络·后端·python
AC赳赳老秦1 小时前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
时空无限2 小时前
vllm 大模型启动缓存相关环境变量 export
linux·缓存·vllm