update mertics
This commit is contained in:
+41
-4
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user