Skip to main content
Glama
pod_resource.go2.73 kB
package pod import ( "fmt" "strings" "time" "github.com/gin-gonic/gin" "github.com/weibaohui/k8m/pkg/comm/utils/amis" "github.com/weibaohui/kom/kom" v1 "k8s.io/api/core/v1" ) type ResourceController struct{} func RegisterResourceRoutes(api *gin.RouterGroup) { ctrl := &ResourceController{} api.GET("/pod/usage/ns/:ns/name/:name", ctrl.Usage) api.GET("/pod/top/ns/:ns/list", ctrl.TopList) } // @Summary 获取Pod资源使用情况 // @Security BearerAuth // @Param cluster query string true "集群名称" // @Param ns path string true "命名空间" // @Param name path string true "Pod名称" // @Success 200 {object} string // @Router /k8s/cluster/{cluster}/pod/usage/ns/{ns}/name/{name} [get] func (rc *ResourceController) Usage(c *gin.Context) { name := c.Param("name") ns := c.Param("ns") ctx := amis.GetContextWithUser(c) selectedCluster, err := amis.GetSelectedCluster(c) if err != nil { amis.WriteJsonError(c, err) return } usage, err := kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(ns). Name(name). Ctl().Pod().ResourceUsageTable(kom.DenominatorLimit) if err != nil { amis.WriteJsonError(c, err) return } amis.WriteJsonData(c, usage) } // @Summary 获取Pod资源使用情况列表 // @Security BearerAuth // @Param cluster query string true "集群名称" // @Param ns path string true "命名空间,多个用逗号分隔" // @Success 200 {object} string // @Router /k8s/cluster/{cluster}/pod/top/ns/{ns}/list [get] // TopList 返回指定命名空间下所有 Pod 的资源使用情况(CPU、内存等),支持多命名空间查询,并以便于前端排序的格式输出。 func (rc *ResourceController) TopList(c *gin.Context) { ns := c.Param("ns") ctx := amis.GetContextWithUser(c) selectedCluster, err := amis.GetSelectedCluster(c) if err != nil { amis.WriteJsonError(c, err) return } podMetrics, err := kom.Cluster(selectedCluster).WithContext(ctx).Resource(&v1.Pod{}). Namespace(strings.Split(ns, ",")...). WithCache(time.Second * 30). Ctl().Pod().Top() if err != nil { amis.WriteJsonError(c, err) return } // 转换为map 前端排序使用,usage.cpu这种前端无法正确排序 var result []map[string]string for _, item := range podMetrics { result = append(result, map[string]string{ "name": item.Name, "namespace": item.Namespace, "cpu": item.Usage.CPU, "memory": item.Usage.Memory, "cpu_nano": fmt.Sprintf("%d", item.Usage.CPUNano), "memory_byte": fmt.Sprintf("%d", item.Usage.MemoryByte), "cpu_fraction": item.Usage.CPUFraction, "memory_fraction": item.Usage.MemoryFraction, }) } amis.WriteJsonList(c, result) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/k8m'

If you have feedback or need assistance with the MCP directory API, please join our Discord server