云计算-K8s 运维:Python SDK 操作 Job/Deployment/Pod+RBAC 权限配置及自定义 Pod 调度器实战
简介
在 Kubernetes 运维中,自动化资源管理与定制化调度是提升效率的核心需求,而 Python SDK 是实现这一目标的关键工具。本次围绕 K8s Python SDK 展开全场景实战,以 “代码 + 效果” 双维度,覆盖 5 大核心运维场景,Job 自动化创建(先清理重名资源再部署计算任务)、Deployment 全流程管理(创建 Nginx 服务并导出 JSON 状态文件)、Pod 生命周期管控(删除 - 创建 - 查询一体化)、RBAC 权限配置(命名空间 / 角色 / 绑定的创建与验证),以及自定义调度器开发(监听 Pending Pod 并随机绑定可用节点)。每个场景均提供可直接运行的完整 Python 代码,搭配 YAML 配置文件与执行逻辑解析,适合运维、开发人员快速掌握 SDK 自动化技巧,降低手动操作成本,提升集群管理效率,同理可实现其他资源的调度
1.SDK 实现 Job 创建
在前面已建好的 Kubernetes 开发环境云平台上。使用 Kubernetes python SDK 的 “kubernetes”Python 库,在/root 目录下,创建 sdk_job_manager.py 文件,要求编写 python 代 码,代码实现以下任务:
(1)编写 Python 程序实现 Job 资源的创建。Job 配置信息如下。如果同名 Job 存在, 先删除再创建。
(2)创建完成后,查询该 Job 的详细信息,执行结果控制台输出,以 json 格式展示。 Job 创建 yaml 的信息如下:
[root@k8s-master-node1 ~]# cat spec-pi-job.yaml apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: metadata: name: pi spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never[root@k8s-master-node1 ~]# vi sdk_job_manager.py import time,yaml from kubernetes.client import BatchV1Api from kubernetes.config import load_kube_config load_kube_config() api = BatchV1Api() try: api.delete_namespaced_job(name='pi', namespace='default') print('同名job删除') except Exception as e: pass time.sleep(15) with open("spec-pi-job.yaml", encoding="utf-8") as f: data = yaml.safe_load(f) print(data) create = api.create_namespaced_job(body=data, namespace="default") print(f"创建job:{create}") get = api.read_namespaced_job(name="pi", namespace="default") print(f"查询job:{get}")
2.SDK方式管理deployment服务
在提供的OpenStack私有云平台上,使用“k8s-python-dev”镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为“root/1DaoYun@2022”。使用Kubernetes python SDK的“kubernetes”P