【问题标题】:I need to get resource usage of Pods in a Kubernetes Cluster with kubernetes python client我需要使用 kubernetes python 客户端获取 Kubernetes 集群中 Pod 的资源使用情况
【发布时间】:2020-11-27 10:00:08
【问题描述】:

我有 linux 命令来获取特定命名空间中 pod 的资源使用情况,它的等效 python 命令是什么

$ kubectl top pod
NAME                                CPU(cores)   MEMORY(bytes)   
nginx-deployment-7fd6966748-57mt5   0m           2Mi             
nginx-deployment-7fd6966748-jpbjl   0m           2Mi             
nginx-deployment-7fd6966748-snrx4   0m           2Mi

【问题讨论】:

标签: python python-3.x kubernetes kubernetes-python-client


【解决方案1】:

没有单一的命令。

Kubernetes 指标在 metrics.k8s.io 上公开。您必须编写程序来查询 API 并获取结果。

例如对于节点。

此 API 在 /apis/metrics.k8s.io/ 端点下可用

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq 用于节点指标

【讨论】:

    【解决方案2】:

    感谢您的输入,以下命令运行良好

    >>> from kubernetes import client, config
    >>> 
    >>> config.load_kube_config()
    >>> api = client.CustomObjectsApi()
    >>> resource = api.list_namespaced_custom_object(group="metrics.k8s.io",version="v1beta1", namespace="default", plural="pods")
    >>> for pod in resource["items"]:
    ...    print(pod['containers'], "\n")
    ...
    

    【讨论】:

    • 什么是“api”对象?如何导入或创建?
    • api 对象这里是CustomObjectsApi,另见issue中的示例
    • 谢谢@Nabin 和 Marius Balčytis 我会更新我的答案
    【解决方案3】:

    您也可以使用 python 运行 kubectl 命令。

    from subprocess import call
    call('kubectl describe pod pod_name_here -n default', shell=True)
    

    因此,您可以使用 Python Kubernetes 库过滤任何内容,还可以使用 kubectl 命令来简化您的工作。

    【讨论】:

    • 这不是使用 kubernetes-python-client
    • 这只是一种解决方法,因为 Kubernetes 不支持它,我看不出 -1 的原因。 Python 理念可能会帮助有需要的人。
    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 2019-01-09
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2023-01-19
    • 2019-03-03
    相关资源
    最近更新 更多