@@ -22,6 +22,7 @@ import (
2222 storagev1 "k8s.io/api/storage/v1"
2323 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2424 "k8s.io/apimachinery/pkg/runtime/schema"
25+ metricsv1beta1 "k8s.io/metrics/pkg/apis/metrics/v1beta1"
2526
2627 "github.com/oceanbase/ob-operator/internal/dashboard/business/common"
2728 "github.com/oceanbase/ob-operator/internal/dashboard/business/constant"
@@ -105,34 +106,21 @@ func extractNodeConditions(node *corev1.Node) []response.K8sNodeCondition {
105106 return conditions
106107}
107108
108- func extractNodeResource (ctx context. Context , node * corev1.Node ) * response.K8sNodeResource {
109+ func extractNodeResource (metricsMap map [ string ]metricsv1beta1. NodeMetrics , node * corev1.Node ) * response.K8sNodeResource {
109110 nodeResource := & response.K8sNodeResource {}
111+ metrics , ok := metricsMap [node .Name ]
110112 nodeResource .CpuTotal = node .Status .Capacity .Cpu ().AsApproximateFloat64 ()
111113 nodeResource .MemoryTotal = node .Status .Capacity .Memory ().AsApproximateFloat64 () / constant .GB
112- podList , err := resource .ListAllPods (ctx )
113- if err == nil {
114- cpuRequested := 0.0
115- memoryRequested := 0.0
116- for _ , pod := range podList .Items {
117- if ! strings .Contains (pod .Spec .NodeName , node .Name ) {
118- continue
119- }
120- for _ , container := range pod .Spec .Containers {
121- cpuRequest , found := container .Resources .Requests [ResourceCpu ]
122- if found {
123- cpuRequested += cpuRequest .AsApproximateFloat64 ()
124- }
125- memoryRequest , found := container .Resources .Requests [ResourceMemory ]
126- if found {
127- memoryRequested += memoryRequest .AsApproximateFloat64 () / constant .GB
128- }
129- }
114+ if ok {
115+ if cpuUsed , ok := metrics .Usage [corev1 .ResourceCPU ]; ok {
116+ nodeResource .CpuUsed = cpuUsed .AsApproximateFloat64 ()
117+ }
118+ if memoryUsed , ok := metrics .Usage [corev1 .ResourceMemory ]; ok {
119+ nodeResource .MemoryUsed = memoryUsed .AsApproximateFloat64 () / constant .GB
130120 }
131- nodeResource .CpuUsed = cpuRequested
132- nodeResource .MemoryUsed = memoryRequested
121+ nodeResource .CpuFree = nodeResource . CpuTotal - nodeResource . CpuUsed
122+ nodeResource .MemoryFree = nodeResource . MemoryTotal - nodeResource . MemoryUsed
133123 }
134- nodeResource .CpuFree = nodeResource .CpuTotal - nodeResource .CpuUsed
135- nodeResource .MemoryFree = nodeResource .MemoryTotal - nodeResource .MemoryUsed
136124 return nodeResource
137125}
138126
@@ -222,6 +210,7 @@ func ListEvents(ctx context.Context, queryEventParam *param.QueryEventParam) ([]
222210func ListNodes (ctx context.Context ) ([]response.K8sNode , error ) {
223211 nodes := make ([]response.K8sNode , 0 )
224212 nodeList , err := resource .ListNodes (ctx )
213+ nodeMetricsMap , metricsErr := resource .ListNodeMetrics (ctx )
225214 if err == nil {
226215 for _ , node := range nodeList .Items {
227216 internalAddress , externalAddress := extractNodeAddress (& node )
@@ -240,28 +229,21 @@ func ListNodes(ctx context.Context) ([]response.K8sNode, error) {
240229 CRI : node .Status .NodeInfo .ContainerRuntimeVersion ,
241230 }
242231
232+ nodeResource := & response.K8sNodeResource {}
233+ if metricsErr == nil {
234+ nodeResource = extractNodeResource (nodeMetricsMap , & node )
235+ } else {
236+ logger .Errorf ("Got error when list node metrics, err: %v" , metricsErr )
237+ }
243238 nodes = append (nodes , response.K8sNode {
244239 Info : nodeInfo ,
245- Resource : extractNodeResource ( ctx , & node ) ,
240+ Resource : nodeResource ,
246241 })
247242 }
248243 }
249244 return nodes , err
250245}
251246
252- func ListNodeResources (ctx context.Context ) ([]response.K8sNodeResource , error ) {
253- nodeList , err := resource .ListNodes (ctx )
254- if err != nil {
255- return nil , err
256- }
257- nodeResources := make ([]response.K8sNodeResource , 0 , len (nodeList .Items ))
258- for _ , node := range nodeList .Items {
259- nodeResource := extractNodeResource (ctx , & node )
260- nodeResources = append (nodeResources , * nodeResource )
261- }
262- return nodeResources , nil
263- }
264-
265247func ListStorageClasses (ctx context.Context ) ([]response.StorageClass , error ) {
266248 storageClasses := make ([]response.StorageClass , 0 )
267249 storageClassList , err := resource .ListStorageClasses (ctx )
0 commit comments