update mertics

This commit is contained in:
Ubuntu
2026-01-06 05:03:27 +00:00
parent 23116e9086
commit 98f4b0a617
5 changed files with 329 additions and 9 deletions
+41 -4
View File
@@ -411,11 +411,10 @@ class K8sManager:
pod_name: Pod名称
Returns:
Pod资源使用信息
Pod实时资源使用信息和配额信息
"""
try:
# 注意: 需要集群安装metrics-server
# 这里提供基本的资源配额信息
# 获取 Pod 配额信息
pod = self.v1.read_namespaced_pod(
name=pod_name,
namespace=self.namespace
@@ -424,8 +423,9 @@ class K8sManager:
container = pod.spec.containers[0]
resources = container.resources
return {
result = {
"name": pod_name,
"namespace": self.namespace,
"requests": {
"cpu": resources.requests.get("cpu") if resources.requests else None,
"memory": resources.requests.get("memory") if resources.requests else None
@@ -435,6 +435,43 @@ class K8sManager:
"memory": resources.limits.get("memory") if resources.limits else None
}
}
# 尝试获取实时使用情况(需要 metrics-server)
try:
from kubernetes.client import CustomObjectsApi
custom_api = CustomObjectsApi()
# 调用 metrics.k8s.io API
metrics = custom_api.get_namespaced_custom_object(
group="metrics.k8s.io",
version="v1beta1",
namespace=self.namespace,
plural="pods",
name=pod_name
)
# 提取实时使用数据
if metrics and "containers" in metrics:
container_metrics = metrics["containers"][0]
usage = container_metrics.get("usage", {})
result["usage"] = {
"cpu": usage.get("cpu"),
"memory": usage.get("memory")
}
result["timestamp"] = metrics.get("timestamp")
logger.info(f"✅ 获取到实时资源使用: CPU={usage.get('cpu')}, Memory={usage.get('memory')}")
else:
result["usage"] = None
logger.warning(f"⚠️ Metrics 数据格式异常")
except Exception as metrics_error:
logger.warning(f"⚠️ 无法获取实时资源使用(可能未安装 metrics-server): {str(metrics_error)}")
result["usage"] = None
result["metrics_available"] = False
return result
except ApiException as e:
logger.error(f"获取Pod资源信息失败: {e}")
raise Exception(f"获取Pod资源信息失败: {e.reason}")