Kom - Kubernetes Operations Manager - MCP服务,MCP服务器,MCP教程

产品定位

Kom是一个Kubernetes操作管理工具,旨在简化Kubernetes资源的操作和管理,提供丰富的功能和易用的接口。

核心功能

  1. 简单易用:提供创建、更新、删除、获取、列表等操作,支持内置资源和CRD资源的操作。
  2. 多集群支持:通过RegisterCluster轻松管理多个Kubernetes集群。
  3. MCP支持:支持多集群的MCP管理,支持stdio和sse两种模式,内置48种工具。
  4. 跨命名空间查询:支持跨命名空间查询资源。
  5. 链式调用:提供链式调用,使操作资源更加简单和直观。
  6. 自定义资源定义(CRD)支持:轻松定义和操作自定义资源。
  7. 回调机制:支持回调机制,轻松拓展业务逻辑。
  8. Pod内文件操作:支持上传、下载、删除文件。
  9. 高频操作封装:如Deployment的restart重启、scale扩缩容、启停等20余项操作功能。
  10. SQL查询Kubernetes资源:支持使用SQL语句查询Kubernetes资源。
  11. 查询缓存:在高频、批量查询场景下,可设置缓存过期时间,提升查询性能。

适用场景

  1. Kubernetes资源管理:适用于需要频繁操作Kubernetes资源的场景。
  2. 多集群管理:适用于需要管理多个Kubernetes集群的场景。
  3. 自定义资源操作:适用于需要操作自定义资源定义(CRD)的场景。
  4. Pod内文件操作:适用于需要在Pod内进行文件操作的场景。
  5. 高频查询优化:适用于需要高频查询Kubernetes资源并优化性能的场景。

工具列表

Kom内置了49种工具,涵盖集群管理、部署管理、动态资源管理、节点管理、Pod管理、YAML管理、存储管理、Ingress管理等多个类别。具体工具列表如下:

| 类别 | 方法 | 描述 |
|--------------------|--------------------------------|-----------------------------------------|
| 集群管理(1) | list_clusters | 列出所有已注册的Kubernetes集群 |
| 部署管理(12) | scale_deployment | 扩缩容Deployment |
| | restart_deployment | 重启Deployment |
| | stop_deployment | 停止Deployment |
| | restore_deployment | 恢复Deployment |
| | update_tag_deployment | 更新Deployment镜像标签 |
| | rollout_history_deployment | 查询Deployment升级历史 |
| | rollout_undo_deployment | 回滚Deployment |
| | rollout_pause_deployment | 暂停Deployment升级 |
| | rollout_resume_deployment | 恢复Deployment升级 |
| | rollout_status_deployment | 查询Deployment升级状态 |
| | hpa_list_deployment | 查询Deployment的HPA列表 |
| | list_deployment_pods | 获取Deployment管理的Pod列表 |
| 动态资源管理(含CRD,8) | get_k8s_resource | 获取k8s资源 |
| | describe_k8s_resource | 描述k8s资源 |
| | delete_k8s_resource | 删除k8s资源 |
| | list_k8s_resource | 列表形式获取k8s资源 |
| | list_k8s_event | 列表形式获取k8s事件 |
| | patch_k8s_resource | 更新k8s资源,以JSON Patch方式更新 | |
| | label_k8s_resource | 为k8s资源添加或删除标签 |
| | annotate_k8s_resource | 为k8s资源添加或删除注解 |
| 节点管理(8) | taint_node | 为节点添加污点 |
| | untaint_node | 为节点移除污点 |
| | cordon_node | 为节点设置Cordon |
| | uncordon_node | 为节点取消Cordon |
| | drain_node | 为节点执行Drain |
| | get_node_resource_usage | 查询节点的资源使用情况 |
| | get_node_ip_usage | 查询节点上Pod IP资源使用情况 |
| | get_node_pod_count | 查询节点上的Pod数量 |
| Pod 管理(14) | list_pod_files | 列出Pod文件 |
| | list_all_pod_files | 列出Pod所有文件 |
| | delete_pod_file | 删除Pod文件 |
| | upload_file_to_pod | 上传文件到Pod内,支持传递文本内容,存储为Pod内文件 |
| | get_pod_logs | 获取Pod日志 |
| | run_command_in_pod | 在Pod中执行命令 |
| | get_pod_linked_service | 获取Pod关联的Service |
| | get_pod_linked_ingress | 获取Pod关联的Ingress |
| | get_pod_linked_endpoints | 获取Pod关联的Endpoints |
| | get_pod_linked_pvc | 获取Pod关联的PVC |
| | get_pod_linked_pv | 获取Pod关联的PV |
| | get_pod_linked_env | 通过在pod内运行env命令获取Pod运行时环境变量 |
| | get_pod_linked_env_from_yaml | 通过Pod yaml定义获取Pod运行时环境变量 |
| | get_pod_resource_usage | 获取Pod的资源使用情况,包括CPU和内存的请求值、限制值、可分配值和使用比例 |
| YAML管理(2) | apply_yaml | 应用YAML资源 |
| | delete_yaml | 删除YAML资源 |
| 存储管理(3) | set_default_storageclass | 设置默认StorageClass |
| | get_storageclass_pvc_count | 获取StorageClass下的PVC数量 |
| | get_storageclass_pv_count | 获取StorageClass下的PV数量 |
| Ingress管理(1) | set_default_ingressclass | 设置默认IngressClass |

使用教程

使用依赖

  1. 确保已安装Go环境。
  2. 确保已配置Kubernetes集群的kubeconfig文件。

安装教程

  1. 导入Kom库:
    bash
    import (
    "github.com/weibaohui/kom"
    "github.com/weibaohui/kom/callbacks"
    )
  2. 注册回调和集群:
    go
    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()
    // 其他逻辑
    }

调试方式

  1. 启动MCP Server:
    go
    mcp.RunMCPServer("kom mcp server", "0.0.1", 9096)
  2. 编译并运行:
    shell
    go build main.go
    ./kom
  3. 访问MCP Server:
    shell
    http://IP:9096/sse

常见问题解答

  1. 如何注册多个集群?
    使用kom.Clusters().RegisterByPathWithID方法注册多个集群。
  2. 如何查询跨命名空间的资源?
    使用kom.Namespace("default","kube-system").List(&items)方法查询跨命名空间的资源。
  3. 如何使用SQL查询Kubernetes资源?
    使用kom.DefaultCluster().Sql(sql).List(&list)方法执行SQL查询。
  4. 如何操作Pod内的文件?
    使用kom.DefaultCluster().Namespace("default").Name("nginx").Ctl().Pod().ContainerName("nginx").ListFiles("/etc")方法操作Pod内的文件。

点击访问

搜索工具

Azure AI Agent Service MCP Server - MCP服务,MCP服务器,MCP教程

2025-4-29 12:12:56

搜索工具

mcp-sequentialthinking-tools - MCP服务,MCP服务器,MCP教程

2025-4-29 12:13:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索