簡介
在 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