关于空间,我意识到我可以将根路径“/”安装到容器中并使用这段代码来获取我的统计信息:
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)))
Run Code Online (Sandbox Code Playgroud)
不过,仍在寻找一种通过 Kubernetes 本身来实现这一点的方法。
我正在构建一项服务,其部分功能是监视我的 kubernetes 集群的系统资源(不是特定的 Pod - 节点运行的整个机器),我意识到这kubectl top node
是获取该信息(不包括存储)的好方法。
有没有办法使用 kubernetes python 包获取此信息?
我试图在包文档中找到解决方案,并意识到该操作不存在。(也许用不同的名字?我找不到它)
也在 Github 上发现了这个问题,它部分解决了我的问题,但我仍在寻找更简单的东西。
我的问题:如何通过 Kubernetes Python 包检查 kubernetes 节点的系统资源(例如内存、存储和 CPU 使用情况)?
Kubernetes 中可通过 Metrics API 获取资源使用情况指标,例如 Pod 或节点 CPU 和内存使用情况。
您可以使用命令访问Metrics APIkubectl get --raw
,例如:
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
Run Code Online (Sandbox Code Playgroud)
使用Kubernetes Python 客户端,您应该能够检查 Kubernetes 节点的内存和 CPU 使用情况,就像使用命令一样kubectl top nodes
:
注意:内存在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']))
Run Code Online (Sandbox Code Playgroud)
和示例输出:
$ ./usage_info.py
Node Name: node01 CPU: 82845225n Memory: 707408Ki
Node Name: node02 CPU: 99717207n Memory: 613892Ki
Node Name: node03 CPU: 74841362n Memory: 625316Ki
Run Code Online (Sandbox Code Playgroud)
在存储使用方面,我认为应该以不同的方式检查,因为此信息在端点上不可用/apis/metrics.k8s.io/v1beta1/nodes
。
归档时间: |
|
查看次数: |
4164 次 |
最近记录: |