繁体   English   中英

如何在 kubernetes python 中使用 kubectl 顶级节点?

[英]how to use kubectl top node in kubernetes python?

更新

关于空间,我意识到我可以将根路径“/”安装到容器中并使用这段代码来获取我的统计信息:

import shutil

total, used, free = shutil.disk_usage("/")

print("Total: %d GiB" % (total // (2**30)))
print("Used: %d GiB" % (used // (2**30)))
print("Free: %d GiB" % (free // (2**30)))

不过,仍在寻找一种通过 Kubernetes 本身来实现的方法。

原始问题

我正在构建一个服务,它的 function 的一部分是监视我的 kubernetes 集群的系统资源(不是特定的 pod - 节点运行的整个机器)我意识到kubectl top node是获取该信息的好方法(不包括贮存)。

有没有办法使用 kubernetes python package 获取此信息?

我试图在package 文档中找到解决方案,并意识到该操作不存在。 (也许用不同的名字?我找不到它)
在 Github 上也发现了这个问题,它部分解决了我的问题,但我仍在寻找更简单的东西。

My question: How can I check for system resources like Memory, storage, and CPU usage for my kubernetes node through the Kubernetes Python package?

通过 Metrics API 可以在 Kubernetes 中获得资源使用指标,例如 pod 或节点 CPU 和 memory 使用情况。
您可以使用kubectl get --raw命令访问Metrics API ,例如:

kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes

更多示例可以在Metrics API 文档中找到。


Using Kubernetes Python Client you should be able to check memory and cpu usage of Kubernetes nodes, just like with the kubectl top nodes command:
注意: Memory 以kilobytes为单位,但可以轻松转换为megabytes

#!/usr/bin/python
# Script name: usage_info.py

from kubernetes import client, config

config.load_kube_config()

api = client.CustomObjectsApi()
k8s_nodes = api.list_cluster_custom_object("metrics.k8s.io", "v1beta1", "nodes")


for stats in k8s_nodes['items']:
    print("Node Name: %s\tCPU: %s\tMemory: %s" % (stats['metadata']['name'], stats['usage']['cpu'], stats['usage']['memory']))

和样品 output:

$ ./usage_info.py
Node Name: node01     CPU: 82845225n  Memory: 707408Ki
Node Name: node02     CPU: 99717207n  Memory: 613892Ki
Node Name: node03     CPU: 74841362n  Memory: 625316Ki

在存储使用方面,我认为应该以不同的方式检查它,因为此信息在/apis/metrics.k8s.io/v1beta1/nodes端点上不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM