kagent:把 Agent 当 Pod 来管,赌的是 Agent 的最终归宿是 K8s
我们写过用kubectl apply -f deployment.yaml起一个 Pod写过用Service把它暴露出来写过用Operator监听 CRD 自动调和状态。Solo.io 那群人 2025 年初做了一个看起来很自然、但没人提早做出来的事把同一套思路平移到 AI Agent 上——kubectl apply -f agent.yaml起一个 Agent用ToolServer接 MCP 工具用Controller监听 Agent 状态做调和。这就是 kagent。它在 2025 年 3 月 KubeCon Europe 上由 Solo.io 开源、捐给 CNCF 进了 Sandbox到本文写作时2026-05只用了 16 个月就攒到 2,717 ★、最新版 v0.9.2、67 contributors。但别把它和 HolmesGPT、k8sgpt 放进同一筐——它们解决的不是同一个层次的问题。一个反直觉的类比kagent 是 Agent 的 Kubernetes不是另一个 Agent要看清 kagent 在做什么最快的路径是把它和 K8s 本身做平行类比这张图说的是同一种思路平移到不同对象上Pod ↔ Agent CRDPod 是跑容器的最小调度单元Agent CRD 是跑一个 LLM 推理循环的最小调度单元。两者都是声明式定义YAML 一写、kubectl apply一跑剩下的交给 controller。Service ↔ ToolServer CRDService 把后端 Pod 暴露成网络入口ToolServer 把 MCP 协议下的工具集K8s API、Prometheus、Helm…暴露成 Agent 可调用的入口。ConfigMap ↔ Session CRDConfigMap 注入运行时配置Session 持久化对话状态消息历史、用户上下文。Operator ↔ kagent ControllerOperator 监听自定义资源做调和kagent Controller 监听 Agent / ToolServer / Session 做生命周期管理。这个类比的反直觉之处是HolmesGPT、k8sgpt 这些项目是应用层kagent 是运行时层——它们应该一起用不是互相替代。HolmesGPT 这种现成 SRE Agent 完全可以打包成一个 kagent 的 Agent CRD 跑在 kagent 之上反过来用 kagent 跑 HolmesGPT等于在 K8s 上跑 MySQL——一码归一码。拆开看它到底怎么工作kagent.dev/docs/concepts/architecture把整个系统切成三层。我们用一张图把控制面、数据面、外部接入串起来控制面Kubernetes 原生核心是用 Go 写的kagent Controller监听四种 CRDAgentAgent 定义、ToolServerMCP 工具入口、Session对话状态、ModelConfigLLM 配置。这一层做的事情和 Istio、Argo 这些 K8s 生态老兵做的事一样watch reconcile。Solo.io 是 Istio 的创始人公司——他们写了 10 年 controller把这套搬过来不需要学习成本。数据面双引擎 Engine跑 Agent 推理循环的运行时分两种——Python ADK默认建在 Google ADK 之上启动 ~15s资源占用偏高但生态完整、对 Python 写的 prompt/tool 友好。Go ADK高性能启动 ~2s资源占用低适合小 Agent 大量并发场景。两个 ADK 之间通过A2A 协议Agent-to-Agent通信——这是 Google 在 2025 年推的开放协议让一个 Agent 可以发现并调用另一个 Agent。kagent 把它做成了第一类协议意味着多 Agent 编排不是搭出来的是协议层保证的。外部接入MCP ToolServers预置了 K8s、Istio、Helm、Argo、Prometheus、Grafana、Cilium 这一票 CNCF 项目的工具集——选这几个不是偶然刚好是 Solo.io 服务网格圈层的共同语言。LLM ProvidersOpenAI、Anthropic、Gemini、xAI、Azure OpenAI、AWS Bedrock、Vertex AI、Ollama、vLLM、HuggingFace——主流和自托管都能接。一段最小化的AgentCRD 长这样从官方文档简化apiVersion:kagent.dev/v1alpha1kind:Agentmetadata:name:k8s-troubleshooterspec:description:排查 K8s 集群里的 Pod 问题modelConfig:gpt-4o-minisystemMessage:你是一个谨慎的 SRE先看 events 再做诊断tools:-type:McpServermcpServer:toolServer:kubernetes-tools# 引用一个已部署的 ToolServer CRDtoolNames:[get_pods,describe_pod,get_events]kubectl apply -f之后Controller 会把这个 Agent 注册到 Engine、把它暴露成一个 OpenAI-compatible HTTP 端点也支持 A2A 端点然后我们就可以从 Slack / Discord / 自己的 webhook 调它或者用 kagent CLI 在终端里直接对话。整个生命周期是声明式的——改了 YAML、kubectl applyAgent 自动滚更新跟 Deployment 一样。它能干什么四类典型用例官方主页和社区博客把 kagent 的应用场景归成四类每一类对应一个真实的我们为什么要为它建运行时的理由事故响应自动化把一个 SRE 排查流程做成 Agent CRD——监听告警 → 调 ToolServer 拉数据 → A2A 转给修复 Agent → 写 PR。这条链路在 HolmesGPT 里是写死的在 kagent 里是我们自己拼装的。可观测性助手让团队用自然语言查 Prometheus / Grafana 数据。“我们 nginx ingress 错误率最近 1h 怎样”——Agent 把它翻译成 PromQL跑、解读、回答。平台自助服务业务团队不用懂 Helm跟 Agent 说给我开个 Redis 测试实例Agent 走 ToolServer 调 Helm Argo CD 生成 PR、走审批、自动 sync。跨渠道企业 Agent同一个 Agent 同时挂在 Slack、Discord、Telegram、企业微信下——kagent 把入口做成 OpenAI-compatible前面挂什么 bot 都行。这四类有一个共同特征长生命周期 工具调用密集 状态需要持久化。Lambda 风格的短任务一次性 LLM 调用用 kagent 是杀鸡用牛刀但真正想跑事故响应、可观测、平台自助的团队没有 K8s 这一层做调度自己造一个等于重新发明轮子。它不解决什么评估值不值得学的边界kagent 不是万能的——也不该被当万能的。下面这些它显式不做搞清楚边界比堆功能重要不是开箱即用的 SRE Agent。它是给我们造 Agent 的运行时不是现成的 Agent。如果团队只想装一个能查 K8s 故障的 AI 工具HolmesGPT / k8sgpt 直接能用kagent 还要先写 Agent CRD。不教我们 prompt 工程。Agent 的指令、tool description、few-shot 例子还是我们自己写——kagent 只负责把它跑起来、调度好、暴露好。K8s 强绑定。如果 Agent 跑在 Lambda、Cloud Run、本地 Python 进程或 Edge 节点上更合适kagent 不在选项里。它的整个价值假设是K8s 是 Agent 的运行时。企业数据接入不是它的强项。Microsoft 的 Dapr Agents 走的是另一条路50 enterprise data bindingPDF、SharePoint、SAP、SQL Server……。kagent 的 ToolServers 偏 CNCF 工具业务系统接入要自己写 MCP server。多租户和细粒度权限是早期阶段。v0.9.2 版本号意味着还没到 1.0生产环境接入前先看 RBAC 与多 namespace 隔离的成熟度。回到用户最初的问题——值不值得关注和学习三个判断如果团队已经重度用 K8s Istio Argo Helm并且打算把 AI Agent 当一类长期跑的工作负载来部署kagent 几乎是当前的唯一选择。学习曲线是额外几个 CRD对会写 Operator 的人是免费迁移。如果只是想试试 Agent 给团队带来什么价值先用 HolmesGPT 这类现成 Agent——kagent 的 setup 成本对零基础团队偏重。如果在做 AI 平台技术选型、想押注一个范式押 kagent 的赔率不差Solo.io 是 Istio 团队、CNCF Sandbox 兜底、AutoGen Google ADK 双背书、A2A MCP 协议合规。它不一定赢但输的话整个K8s 是 Agent 运行时的范式都得改——这个对赌的下行有限。最后说一句务实的kagent 现在是 v0.9.22026 上半年值得跟进的开源项目里它是少数押对方向 工程团队靠谱的。但先用起来再判断——helm install kagent kagent/kagent再kubectl apply一个 Agent CRD半小时就能验证它和你的 K8s 工作流是不是一回事。