SkillAgentSearch skills...

Kom

kom 是一个用于 Kubernetes 操作的工具,SDK级的kubectl、client-go的使用封装。并且支持作为管理k8s 的 MCP server。 它提供了一系列功能来管理 Kubernetes 资源,包括创建、更新、删除和获取资源,甚至使用SQL查询k8s资源。这个项目支持多种 Kubernetes 资源类型的操作,并能够处理自定义资源定义(CRD)。 通过使用 kom,你可以轻松地进行资源的增删改查和日志获取以及操作POD内文件等动作。

Install / Use

/learn @weibaohui/Kom
About this skill

Quality Score

0/100

Supported Platforms

Claude Code
Cursor

README

Kom - Kubernetes Operations Manager

English | 中文 kom FOSSA Status

简介

kom 是一个用于 Kubernetes 操作的工具,相当于SDK级的kubectl、client-go的使用封装。 它提供了一系列功能来管理 Kubernetes 资源,包括创建、更新、删除和获取资源。这个项目支持多种 Kubernetes 资源类型的操作,并能够处理自定义资源定义(CRD)。 通过使用 kom,你可以轻松地进行资源的增删改查和日志获取以及操作POD内文件等动作,甚至可以使用SQL语句来查询、管理k8s资源。

特点

  1. 简单易用:kom 提供了丰富的功能,包括创建、更新、删除、获取、列表等,包括对内置资源以及CRD资源的操作。
  2. 多集群支持:通过RegisterCluster,你可以轻松地管理多个 Kubernetes 集群,支持AWS EKS集群。
  3. MCP支持:支持多集群的MCP管理,同时支持stdio、sse两种模式,内置58种工具,支持SSE模式,支持私有化部署,多人共享。支持超过百种组合操作。
  4. 支持跨命名空间:通过kom.Namespace("default","kube-system").List(&items) 跨命名空间查询资源。
  5. 链式调用:kom 提供了链式调用,使得操作资源更加简单和直观。
  6. 支持自定义资源定义(CRD):kom 支持自定义资源定义(CRD),你可以轻松地定义和操作自定义资源。
  7. 支持回调机制,轻松拓展业务逻辑,而不必跟k8s操作强耦合。
  8. 支持POD内文件操作,轻松上传、下载、删除文件。
  9. 支持高频操作封装,如deployment的restart重启、scale扩缩容、启停等20余项操作功能。
  10. 支持SQL查询k8s资源。select * from pod where metadata.namespace='kube-system' or metadata.namespace='default' order by metadata.creationTimestamp desc
  11. 支持查询缓存,在高频、批量查询场景下,可设置缓存过期时间,提升查询性能。列表过滤条件不受缓存影响。
  12. 支持Prometheus查询,支持通过集群内的Prometheus服务或外部Prometheus地址进行监控数据查询,支持瞬时查询和区间查询,提供多种结果解析方式。

示例程序

k8m 是一个轻量级的 Kubernetes 管理工具,它基于kom、amis实现,单文件,支持多平台架构。

  1. 下载:从 https://github.com/weibaohui/k8m 下载最新版本。
  2. 运行:使用 ./k8m 命令启动,访问http://127.0.0.1:3618

安装

import (
    "github.com/weibaohui/kom"
    "github.com/weibaohui/kom/callbacks"
)
func main() {
    // 注册回调,务必先注册
    callbacks.RegisterInit()
    // 注册集群
	defaultKubeConfig := os.Getenv("KUBECONFIG")
	if defaultKubeConfig == "" {
		defaultKubeConfig = filepath.Join(homedir.HomeDir(), ".kube", "config")
	}
	_, _ = kom.Clusters().RegisterInCluster()
	_, _ = kom.Clusters().RegisterByPathWithID(defaultKubeConfig, "default")
	kom.Clusters().Show()
	// 其他逻辑
}

使用示例

0. 多集群 k8s MCP 支持

同时支持stdio、sse两种模式 支持多个tools 支持。包括对任意资源的查询列表删除描述操作,以及POD日志读取操作。

1.集成到代码中

// 一行代码启动MCP Server
mcp.RunMCPServer("kom mcp server", "0.0.1", 9096)



2. 编译

# 源码启动
go build main.go 
//编译为kom

3. 启动

启动后支持两种模式,一种为stdio,一种sse。 管理k8s默认使用KUBECONFIG env环境变量。

# 设置KUBECONFIG环境变量
export KUBECONFIG = /Users/xxx/.kube/config
# 运行
./kom 
# MCP Server 访问地址
http://IP:9096/sse

此时,编译得到的二进制文件,可当做stdio 模式使用。 http://IP:9096/sse 模式,可以当做sse 模式使用。

4. 集成到MCP工具中

支持stdio\sse 两种方式集成。 适合MCP工具集成,如Cursor、Claude Desktop(仅支持stdio模式)、Windsurf等,此外也可以使用这些软件的UI操作界面进行添加。

{
  "mcpServers": {
    "kom": {
      "type": "sse",
      "url": "http://IP:9096/sse"
    }
  }
}
{
    "mcpServers": {
        "k8m": {
            "command": "path/to/kom",
            "args": []
        }
    }
}

MCP工具列表(59种)

| 类别 | 方法 | 描述 | | -------------------------- | ------------------------------------ | ----------------------------------------------------- | | 集群管理(1) | list_k8s_clusters | 列出所有已注册的Kubernetes集群 | | DaemonSet管理(1) | restart_k8s_daemonset | 通过集群、命名空间和名称,重启DaemonSet | | 部署管理(12) | scale_k8s_deployment | 通过集群、命名空间、名称 扩缩容Deployment,设置副本数 | | | restart_k8s_deployment | 通过集群、命名空间和名称,重启Deployment | | | stop_k8s_deployment | 停止Deployment | | | restore_k8s_deployment | 恢复Deployment副本数 | | | update_k8s_deployment_image_tag | 更新Deployment中容器的镜像Tag | | | get_k8s_deployment_rollout_history | 查询升级历史 | | | undo_k8s_deployment_rollout | 回滚 | | | pause_k8s_deployment_rollout | 暂停升级 | | | resume_k8s_deployment_rollout | 恢复升级 | | | get_k8s_deployment_rollout_status | 查询升级状态 | | | get_k8s_deployment_hpa_list | 查询Deployment的HPA列表 | | | list_k8s_deploy_event | 列出Deployment相关的事件 | | 动态资源管理(含CRD,8) | get_k8s_resource | 通过集群、命名空间和名称获取Kubernetes资源详情 | | | describe_k8s_resource | 通过集群、命名空间和名称获取Kubernetes资源详情 | | | delete_k8s_resource | 通过集群、命名空间和名称删除Kubernetes资源 | | | list_k8s_resource | 按集群和资源类型列出Kubernetes资源 | | | annotate_k8s_resource | 为Kubernetes资源添加或删除注解 | | | label_k8s_resource | 为Kubernetes资源添加或删除标签 | | | patch_k8s_resource | 通过集群、命名空间和名称更新Kubernetes资源 | | | GetDynamicResource | 获取动态资源 | | 节点管理(11) | taint_k8s_node | 为节点添加污点 | | | untaint_k8s_node | 为节点移除污点 | | | cordon_k8s_node | 设置节点为不可调度状态 | | | uncordon_k8s_node | 设置节点为可调度状态 | | | drain_k8s_node | 清空节点上的Pod并防止新的Pod调度 | | | get_k8s_node_ip_usage | 查询节点IP资源使用情况 | | | list_k8s_node | 获取Node列表 | | | get_k8s_top_node | 获取Node节点CPU和内存资源用量排名列表 | | | get_k8s_pod_count_running_on_node | 查询某个节点上运行的Pod数量统计 | | | get_k8s_node_resource_usage | 查询节点资源使用情况统计 | | | TaintNodeTool | 为节点添加污点 | | 事件管理(1) | list_k8s_event | 按集群和命名空间列出Kubernetes事件 | | Ingress管理(1) | set_default_k8s_ingressclass | 设置IngressClass为默认 | | Pod 管理(18) | run_command_in_k8s_pod | 在Pod内执行命令 | | | list_k8s_pod_event | 列出Pod相关的事件 | | | list_files_in_k8s_pod | 获取Pod中指定路径下的文件列表 | | | list_pod_all_files | 获取Pod中指定路径下的所有文件列表,包含子目录 | | | delete_k8s_pod | 删除Pod | | | delete_pod_file | 删除Pod中的指定文件 | | | get_k8s_pod_linked_env | 获取Pod运行时的环境变量信息 | | | get_pod_linked_env_from_yaml | 通过Pod yaml 定义 获取Pod定义中的环境变量信息 | | | get_k8s_pod_linked_services | 获取与Pod关联的Service | | | get_pod_linked_ingresses | 获取与Pod关联的Ingress | | | get_pod_linked_endpoints | 获取与Pod关联的Endpoints | | | list_k8s_pod | 获取Pod列表 | | | get_k8s_top_pod | 获取Pod CPU 内存 资源用量排名 列表 | | | ListPodFilesTool | 列出Pod文件 | | | ListAllPodFilesTool | 列出Pod所有文件 | | | DeletePodFileTool | 删除Pod文件 | | | UploadPodFileTool | 上传Pod文件 | | | GetPodLogsTool | 获取Pod日志 | | | describe_k8s_pod | 描述Pod容器组 | | 存储管理(3) | set_k8s_default_storageclass | 设置StorageClass为默认 | | | get_k8s_storageclass_pvc_count | 获取StorageClass下的PVC数量 | | | get_k8s_storageclass_pv_count | 获取StorageClass下的PV数量 | | YAML管理(2) | apply_k8s_yaml | 通过YAML创建或更新Kubernetes资源

View on GitHub
GitHub Stars148
CategoryData
Updated17d ago
Forks35

Languages

Go

Security Score

100/100

Audited on Mar 23, 2026

No findings