You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过K8s Python Client的create_from_yaml创建ServiceMonitor并解决API缺失错误?

解决Kubernetes Python客户端部署ServiceMonitor时的AttributeError问题

错误原因

Kubernetes Python官方客户端仅内置原生K8s资源的API类,而ServiceMonitor是Prometheus Operator提供的自定义资源(CRD),默认不在客户端的API类集合中。create_from_yaml函数会根据YAML中的apiVersion自动拼接对应的API类名(如monitoring.coreos.com/v1对应MonitoringCoreosComV1Api),但找不到该类时就会抛出AttributeError。

解决方案

方法一:使用CustomObjectsApi直接创建(推荐)

CustomObjectsApi是K8s客户端提供的通用自定义资源操作接口,无需额外生成代码,直接操作CRD:

from kubernetes import client, config

# 加载集群配置(集群内运行用config.load_incluster_config())
config.load_kube_config()

# 初始化自定义资源API客户端
custom_api = client.CustomObjectsApi()

# 构造ServiceMonitor配置(可直接从YAML转成字典)
servicemonitor_body = {
    "apiVersion": "monitoring.coreos.com/v1",
    "kind": "ServiceMonitor",
    "metadata": {
        "name": "rabbitmq-exporter",
        "labels": {"app": "rabbitmq"}
    },
    "spec": {
        "selector": {"matchLabels": {"app": "rabbitmq"}},
        "endpoints": [
            {"port": "prometheus", "path": "/metrics", "interval": "10s"}
        ]
    }
}

# 创建ServiceMonitor,替换为你的目标命名空间
custom_api.create_namespaced_custom_object(
    group="monitoring.coreos.com",
    version="v1",
    namespace="default",
    plural="servicemonitors",
    body=servicemonitor_body
)

注意:plural参数需与CRD定义中的spec.names.plural一致,ServiceMonitor的复数固定为servicemonitors。

方法二:生成CRD专属API类(适配create_from_yaml)

如果必须使用create_from_yaml,需要生成对应CRD的API类:

  1. 获取ServiceMonitor的OpenAPI定义:
    通过kubectl导出CRD的OpenAPI schema:
    kubectl get crd servicemonitors.monitoring.coreos.com -o jsonpath='{.spec.validation.openAPIV3Schema}' > servicemonitor-openapi.json
    
  2. 用OpenAPI Generator生成Python客户端:
    安装openapi-generator后,运行生成命令:
    openapi-generator generate -i servicemonitor-openapi.json -g python -o prometheus-operator-client
    
  3. 安装生成的客户端:
    cd prometheus-operator-client && pip install .
    
    生成完成后,create_from_yaml就能自动识别并调用MonitoringCoreosComV1Api类完成部署。

内容的提问来源于stack exchange,提问作者Paulo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:55:23