udpate
This commit is contained in:
+55
-1
@@ -322,14 +322,68 @@ class K8sManager:
|
||||
# 尝试获取实际资源使用情况(需要metrics-server)
|
||||
resource_usage = self._get_pod_resource_usage(pod_name)
|
||||
|
||||
# 获取容器实际状态 - 检查是否崩溃或异常
|
||||
container_statuses = pod.status.container_statuses or []
|
||||
actual_status = pod.status.phase # 默认使用Pod阶段
|
||||
health_status = "healthy"
|
||||
container_info = []
|
||||
|
||||
for container_status in container_statuses:
|
||||
container_state = {}
|
||||
restart_count = container_status.restart_count
|
||||
|
||||
# 检查容器状态
|
||||
if container_status.state.running:
|
||||
container_state = {
|
||||
"state": "running",
|
||||
"started_at": container_status.state.running.started_at.isoformat() if container_status.state.running.started_at else None
|
||||
}
|
||||
elif container_status.state.waiting:
|
||||
container_state = {
|
||||
"state": "waiting",
|
||||
"reason": container_status.state.waiting.reason,
|
||||
"message": container_status.state.waiting.message
|
||||
}
|
||||
# 容器在等待状态,标记为不健康
|
||||
health_status = "unhealthy"
|
||||
actual_status = "Waiting"
|
||||
elif container_status.state.terminated:
|
||||
container_state = {
|
||||
"state": "terminated",
|
||||
"reason": container_status.state.terminated.reason,
|
||||
"exit_code": container_status.state.terminated.exit_code,
|
||||
"message": container_status.state.terminated.message,
|
||||
"finished_at": container_status.state.terminated.finished_at.isoformat() if container_status.state.terminated.finished_at else None
|
||||
}
|
||||
# 容器已终止,标记为不健康
|
||||
health_status = "unhealthy"
|
||||
actual_status = "Terminated"
|
||||
|
||||
# 检查容器是否就绪
|
||||
if not container_status.ready:
|
||||
health_status = "unhealthy"
|
||||
|
||||
# 如果重启次数过多,也标记为不健康
|
||||
if restart_count > 5:
|
||||
health_status = "degraded"
|
||||
|
||||
container_info.append({
|
||||
"name": container_status.name,
|
||||
"ready": container_status.ready,
|
||||
"restart_count": restart_count,
|
||||
**container_state
|
||||
})
|
||||
|
||||
result = {
|
||||
"name": pod.metadata.name,
|
||||
"namespace": pod.metadata.namespace,
|
||||
"status": pod.status.phase,
|
||||
"status": actual_status,
|
||||
"health_status": health_status, # 新增:真实健康状态
|
||||
"template": template,
|
||||
"created_at": pod.metadata.creation_timestamp.isoformat() if pod.metadata.creation_timestamp else None,
|
||||
"node": pod.spec.node_name,
|
||||
"pod_ip": pod_ip,
|
||||
"containers": container_info, # 新增:容器详细信息
|
||||
"resources": {
|
||||
"requests": resource_requests,
|
||||
"limits": resource_limits,
|
||||
|
||||
Reference in New Issue
Block a user