如何使用python中的kubernetes-client库获取节点的内存

s3fp2yjn  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(3)|浏览(133)

无法找到如何使用Python中的kubernetes-client库获取kubernetes节点上的内存消耗信息。我知道如何使用kubectl命令获取此信息。
你能给我提供一段代码吗?我怎么能通过lib做到这一点?

  • 谢谢-谢谢
f8rj6qna

f8rj6qna1#

开始使用

kubernetes-client包含您需要的代码片段:

from kubernetes import client, config

def main():
    # Configs can be set in Configuration class directly or using helper
    # utility. If no argument provided, the config will be loaded from
    # default location.
    config.load_kube_config()

    v1 = client.CoreV1Api()
    print("Listing pods with their IPs:")
    ret = v1.list_pod_for_all_namespaces(watch=False)
    for i in ret.items:

        print("%s\t%s\t%s" %
              (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

if __name__ == '__main__':
    main()

方法

要获取单元度量,请尝试以下beta类:V2beta2PodsMetricStatus

指标

根据k8s documentation,您的指标应该是:

  • kube_pod_container_resource_limits_memory_bytes
  • kube_pod_container_resource_requests_memory_bytes
irlmq6kh

irlmq6kh2#

经过长时间的调查和GitHub上的kubernetes-client仓库中的一些好建议(在kubectl命令中使用--v=10标志),我找到了两个资源,可以从中获取我感兴趣的CPU/内存消耗指标:

https://your.kube-url.com/api/v1/namespaces/kube-system/services/http:heapster:/proxy/apis/metrics/v1alpha1/namespaces/default/pods
https://your.kube-url.com/api/v1/namespaces/kube-system/services/http:heapster:/proxy/apis/metrics/v1alpha1/nodes

我找不到任何代码示例如何用kubernetes-client库做同样的事情,这就是为什么我会构建自己的 Package 器。

8qgya5xd

8qgya5xd3#

迟来的答案,但因为这让我很沮丧,我希望有一个适当的答案,这个问题,所以我不必去挖掘它,我现在写一个,使它更容易对下一个可怜的树液。
以下是获取节点内存的方法:

from kubernetes import client

custom_api = client.CustomObjectsApi(client.ApiClient()) 
response = custom_api.list_cluster_custom_object("metrics.k8s.io", "v1beta1", "nodes")

 for node in response['items'];
     print(f"node {node['metadata']['name']} has available memory of {node['usage']['memory']}")

如果您在尝试运行此命令时得到未经授权的响应,则需要更新您的clusterRole和clusterRoleBinding以授权此命令。

相关问题