Compare commits

..

5 Commits

@ -48,9 +48,9 @@
<CardList :hideTitle="true" :filters="filters" />
</block-box>
<block-box title="任务列表">
<!-- <block-box title="任务列表">
<TaskList :hideTitle="true" :filters="filters" />
</block-box>
</block-box> -->
</div>
</template>

@ -53,17 +53,17 @@ export default (Layout) => ({
component: () => import('~/vgpu/views/card/admin/Detail.vue'),
name: 'card-admin-detail',
},
{
path: '/admin/vgpu/task/admin',
component: () => import('~/vgpu/views/task/admin/index.vue'),
name: 'task-admin',
meta: { title: '任务管理', icon: 'vgpu-task', noCache: true },
},
{
path: '/admin/vgpu/task/admin/detail',
component: () => import('~/vgpu/views/task/admin/Detail.vue'),
name: 'task-admin-detail',
},
// {
// path: '/admin/vgpu/task/admin',
// component: () => import('~/vgpu/views/task/admin/index.vue'),
// name: 'task-admin',
// meta: { title: '任务管理', icon: 'vgpu-task', noCache: true },
// },
// {
// path: '/admin/vgpu/task/admin/detail',
// component: () => import('~/vgpu/views/task/admin/Detail.vue'),
// name: 'task-admin-detail',
// },
],
},
],

@ -69,7 +69,7 @@
</block-box>
</div>
<block-box title="任务列表">
<!-- <block-box title="任务列表">
<template v-if="detail.isExternal">
<el-alert title="由于显卡未纳管,无法获取到任务数据" show-icon type="warning" :closable="false" />
<el-empty description="暂无任务数据" :image-size="100" />
@ -77,7 +77,7 @@
<template v-else>
<TaskList :hideTitle="true" :filters="{ deviceId: detail.uuid }" />
</template>
</block-box>
</block-box> -->
</div>
</template>

@ -106,7 +106,7 @@ export const rangeConfigInit = [
},
{
name: 'CPU',
query: `sum(sum by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m]))/count by (instance) (node_cpu_seconds_total{mode="idle"})) *100`,
query: `sum(hami_core_used) / sum(hami_core_size) * 100`,
data: [],
type: 'line',
areaStyle: {
@ -140,7 +140,7 @@ export const rangeConfigInit = [
},
{
name: '内存',
query: `sum(sum(kube_pod_container_resource_requests{resource="memory"}) by (node) / sum(kube_node_status_capacity{resource="memory"}) by (node)) * 100`,
query: `sum(hami_memory_used) / sum(hami_memory_size) * 100`,
data: [],
type: 'line',
areaStyle: {

@ -135,7 +135,7 @@ const cardGaugeConfig = useInstantVector([
{
title: 'CPU 使用率',
percent: 0,
query: `(sum(rate(node_cpu_seconds_total{mode!="idle"}[5m])) / sum(rate(node_cpu_seconds_total[5m]))) * 100`,
query: `sum(count by(instance) (node_cpu_seconds_total{mode="idle"})*(1 - avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[1m]))))`,
totalQuery: `sum(count(node_cpu_seconds_total{mode="system"}) by (instance))`,
percentQuery: ``,
total: 0,

@ -97,7 +97,7 @@
<CardList :hideTitle="true" :filters="{ nodeUid: detail.uid }" />
</block-box>
<block-box title="任务列表">
<!-- <block-box title="任务列表">
<template v-if="detail.isExternal">
<el-alert title="由于节点未纳管,无法获取到任务数据" show-icon type="warning" :closable="false" />
<el-empty description="暂无任务数据" :image-size="100" />
@ -105,7 +105,7 @@
<template v-else>
<TaskList :hideTitle="true" :filters="{ nodeUid: detail.uid }" />
</template>
</block-box>
</block-box> -->
</div>
</template>
@ -170,8 +170,8 @@ const gaugeConfig = useInstantVector(
{
title: 'CPU 使用率',
percent: 0,
query: `(sum(rate(node_cpu_seconds_total{mode!="idle", instance=~"$node"}[5m])) / sum(rate(node_cpu_seconds_total{instance=~"$node"}[5m]))) * 100`,
totalQuery: `sum(count(node_cpu_seconds_total{mode="idle", instance=~"$node"}) by (instance))`,
query: `count(node_cpu_seconds_total{mode="idle", instance=~"$node"}) by (instance)*(1 - avg(rate(node_cpu_seconds_total{mode="idle", instance=~"$node"}[5m])) by (instance))`,
totalQuery: `count(node_cpu_seconds_total{mode="idle", instance=~"$node"}) by (instance)`,
percentQuery: `100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{mode="idle", instance=~"$node"}[1m])))`,
total: 0,
used: 0,
@ -180,8 +180,8 @@ const gaugeConfig = useInstantVector(
{
title: '内存 使用率',
percent: 0,
query: `sum(avg(node_memory_MemTotal_bytes{instance=~"$node"} - node_memory_MemAvailable_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024)`,
totalQuery: `sum(avg(node_memory_MemTotal_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024)`,
query: `avg(node_memory_MemTotal_bytes{instance=~"$node"} - node_memory_MemAvailable_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024`,
totalQuery: `avg(node_memory_MemTotal_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024`,
percentQuery: `100 * (1 - node_memory_MemAvailable_bytes{instance=~"$node"} / node_memory_MemTotal_bytes{instance=~"$node"})`,
total: 0,
used: 0,
@ -190,8 +190,8 @@ const gaugeConfig = useInstantVector(
{
title: '磁盘 使用率',
percent: 0,
query: `sum(sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"} - node_filesystem_free_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024)`,
totalQuery: `sum(sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024)`,
query: `sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"} - node_filesystem_free_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024`,
totalQuery: `sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024`,
percentQuery: ``,
total: 0,
used: 0,
@ -242,7 +242,7 @@ const gaugeConfig = useInstantVector(
percent: 0,
query: ``,
totalQuery: ``,
percentQuery: `sum(sum by (instance) (rate(node_cpu_seconds_total{mode!="idle", instance=~"$node"}[5m]))/count by (instance) (node_cpu_seconds_total{mode="idle"})) *100`,
percentQuery: `avg(sum(hami_core_used{node=~"$node"}) by (instance) / sum(hami_core_size{node=~"$node"}) by (instance) * 100)`,
total: 0,
used: 0,
unit: '核',
@ -252,7 +252,7 @@ const gaugeConfig = useInstantVector(
percent: 0,
query: ``,
totalQuery: ``,
percentQuery: `sum(sum(kube_pod_container_resource_requests{resource="memory",node=~"$node"}) by (node) / sum(kube_node_status_capacity{resource="memory",node=~"$node"}) by (node)) * 100`,
percentQuery: `avg(sum(hami_memory_used{node=~"$node"}) by (instance) / sum(hami_memory_size{node=~"$node"}) by (instance) * 100)`,
total: 0,
used: 0,
unit: 'GiB',

@ -50,9 +50,9 @@
<CardList :hideTitle="true" :filters="data" />
</block-box>
<block-box title="任务列表">
<!-- <block-box title="任务列表">
<TaskList :hideTitle="true" :filters="data" />
</block-box>
</block-box> -->
</template>
<script setup lang="jsx">
@ -78,8 +78,8 @@ const gaugeConfig = useInstantVector(
{
title: 'CPU 使用率',
percent: 0,
query: `(sum(rate(node_cpu_seconds_total{mode!="idle", instance=~"$node"}[5m])) / sum(rate(node_cpu_seconds_total{instance=~"$node"}[5m]))) * 100`,
totalQuery: `sum(count(node_cpu_seconds_total{mode="idle", instance=~"$node"}) by (instance))`,
query: `count(node_cpu_seconds_total{mode="idle", instance=~"$node"}) by (instance)*(1 - avg(rate(node_cpu_seconds_total{mode="idle", instance=~"$node"}[5m])) by (instance))`,
totalQuery: `count(node_cpu_seconds_total{mode="idle", instance=~"$node"}) by (instance)`,
percentQuery: `100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{mode="idle", instance=~"$node"}[1m])))`,
total: 0,
used: 0,
@ -88,8 +88,8 @@ const gaugeConfig = useInstantVector(
{
title: '内存 使用率',
percent: 0,
query: `sum(avg(node_memory_MemTotal_bytes{instance=~"$node"} - node_memory_MemAvailable_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024)`,
totalQuery: `sum(avg(node_memory_MemTotal_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024)`,
query: `avg(node_memory_MemTotal_bytes{instance=~"$node"} - node_memory_MemAvailable_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024`,
totalQuery: `avg(node_memory_MemTotal_bytes{instance=~"$node"}) by (instance) / 1024 / 1024 / 1024`,
percentQuery: `100 * (1 - node_memory_MemAvailable_bytes{instance=~"$node"} / node_memory_MemTotal_bytes{instance=~"$node"})`,
total: 0,
used: 0,
@ -98,8 +98,8 @@ const gaugeConfig = useInstantVector(
{
title: '磁盘 使用率',
percent: 0,
query: `sum(sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"} - node_filesystem_free_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024)`,
totalQuery: `sum(sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024)`,
query: `sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"} - node_filesystem_free_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024`,
totalQuery: `sum(node_filesystem_size_bytes{instance=~"$node", fstype=~"ext4|xfs", mountpoint!~"/var/lib/kubelet/pods.*"}) by (instance) / 1024 / 1024 / 1024`,
percentQuery: ``,
total: 0,
used: 0,
@ -150,7 +150,7 @@ const gaugeConfig = useInstantVector(
percent: 0,
query: ``,
totalQuery: ``,
percentQuery: `sum(sum by (instance) (rate(node_cpu_seconds_total{mode!="idle", instance=~"$node"}[5m]))/count by (instance) (node_cpu_seconds_total{mode="idle"})) *100`,
percentQuery: `avg(sum(hami_container_vcore_allocated{node=~"$node"}) by (instance) / sum(hami_core_size{node=~"$node"}) by (instance) * 100)`,
total: 0,
used: 0,
unit: '核',
@ -160,7 +160,7 @@ const gaugeConfig = useInstantVector(
percent: 0,
query: ``,
totalQuery: ``,
percentQuery: `sum(sum(kube_pod_container_resource_requests{resource="memory",node=~"$node"}) by (node) / sum(kube_node_status_capacity{resource="memory",node=~"$node"}) by (node)) * 100`,
percentQuery: `avg(sum(hami_container_vmemory_allocated{node=~"$node"}) by (instance) / sum(hami_memory_size{node=~"$node"}) by (instance) * 100)`,
total: 0,
used: 0,
unit: 'GiB',

@ -65,7 +65,8 @@ module.exports = defineConfig({
},
proxy: {
'/api/vgpu': {
target: 'http://172.16.100.14:29999',
// target: 'http://172.16.100.14:29999',
target: 'https://hami.educoder.net',
// target: 'http://192.168.2.99:8000',
changeOrigin: true,
},

@ -3,6 +3,7 @@ package data
import (
"context"
"fmt"
"k8s.io/client-go/tools/cache"
"sync"
"time"
"vgpu/internal/biz"
@ -15,24 +16,21 @@ import (
k8stypes "k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/informers"
listerscorev1 "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
)
type podRepo struct {
data *Data
podLister listerscorev1.PodLister
pods map[k8stypes.UID]*biz.PodInfo
allPods []*biz.PodInfo
mutex sync.RWMutex
log *log.Helper
}
func NewPodRepo(data *Data, logger log.Logger) biz.PodRepo {
repo := &podRepo{
data: data,
pods: make(map[k8stypes.UID]*biz.PodInfo),
allPods: []*biz.PodInfo{},
log: log.NewHelper(logger),
data: data,
pods: make(map[k8stypes.UID]*biz.PodInfo),
log: log.NewHelper(logger),
}
repo.init()
return repo
@ -59,8 +57,7 @@ func (r *podRepo) onAddPod(obj interface{}) {
return
}
nodeID, ok := pod.Annotations[util.AssignedNodeAnnotations]
tpiID := pod.Labels["tpi-id"]
if !ok && tpiID == "" {
if !ok {
return
}
if biz.IsPodInTerminatedState(pod) {
@ -84,8 +81,7 @@ func (r *podRepo) onDeletedPod(obj interface{}) {
return
}
_, ok = pod.Annotations[util.AssignedNodeAnnotations]
tpiID := pod.Labels["tpi-id"]
if !ok && tpiID == "" {
if !ok {
return
}
r.delPod(pod)
@ -98,7 +94,6 @@ func (r *podRepo) addPod(pod *corev1.Pod, nodeID string, devices biz.PodDevices)
pi := &biz.PodInfo{Name: pod.Name, UID: pod.UID, Namespace: pod.Namespace, NodeID: nodeID, Devices: devices, Ctrs: ctrs, Labels: pod.Labels}
r.pods[pod.UID] = pi
r.allPods = append(r.allPods, pi)
r.log.Infof("Pod added: Name: %s, UID: %s, Namespace: %s, NodeID: %s", pod.Name, pod.UID, pod.Namespace, nodeID)
}
@ -123,10 +118,10 @@ func (r *podRepo) fetchContainerInfo(pod *corev1.Pod) []*biz.Container {
copier.Copy(&bizContainerDevices, pds)
}
if len(bizContainerDevices) < 1 {
for range pod.Spec.Containers {
bizContainerDevices = append(bizContainerDevices, biz.ContainerDevices{})
}
//return containers
//for range pod.Spec.Containers {
// bizContainerDevices = append(bizContainerDevices, biz.ContainerDevices{})
//}
return containers
}
ctrIdMaps := map[string]string{}

Loading…
Cancel
Save