Kagent - Kubernetes AI Agent 管理
在多模型生态中,AI Agent 需要调用多个 LLM/SLM、通过 MCP/A2A 协议连接工具和其他 Agent,并根据流量动态伸缩。Kubernetes 的 Operator 模式是以 CRD 声明式定义这些 Agent 并自动管理生命周期的最自然方式。Kagent 是将此模式应用于 AI Agent 的参考架构。
概述
Kagent 通过 Custom Resource Definition(CRD)声明式定义 Agent、工具、工作流,Operator 自动部署和管理。无需直接编写 Deployment、Service、ConfigMap,一个 Agent CRD 即可统一管理模型连接、工具绑定、伸缩策略。
Kagent 目前处于参考架构和设计模式阶段,官方开源项目尚未公开。本文档示例基于概念性实现。生产环境请考虑 Bedrock AgentCore、KubeAI、LangGraph Platform 等经过验证的替代方案。
Kagent 部署指南请参阅 Kagent 官方文档。
替代方案对比
| 解决方案 | 特性 | 适用场景 |
|---|---|---|
Kagent(参考) | AI 代理专用 CRD,工作流编排 | 多代理系统,复杂工作 流 |
KubeAI | 轻量级 LLM 服务,OpenAI 兼容 API | 简单模型服务,快速原型 |
Bedrock AgentCore | AWS 托管 Agent 运行时,MCP/A2A 原生,自动扩展 | AWS 原生 Agent 部署,偏好托管基础设施 |
LangGraph Platform | Agent 工作流框架,状态管理,LangSmith 原生集成 | 复杂多步骤 Agent,基于状态的工作流 |
主要功能
- 声明式 Agent 管理:基于 YAML 的 Agent 定义和部署
- 工具注册表:以 CRD 集中管理 Agent 可用工具
- 自动伸缩:通过 HPA/KEDA 集成动态扩展
- 多 Agent 编排:为复杂工作流的 Agent 间协作
- 可观测性集成:与 Langfuse/LangSmith、OpenTelemetry 原生联动
本文档面向 Kubernetes 管理员、平台工程师、MLOps 工程师。需要了解 Kubernetes 基本概念(Pod、Deployment、CRD)。
CNS421: Streamline Amazon EKS Operations with Agentic AI — 介绍利用 Kagent 等 AI Agent 的 EKS 集群自动 管理、实时问题诊断、自动恢复方法。
主要内容:
- Model Context Protocol(MCP):AI Agent 与 AWS 服务集成的标准协议
- 自动化事件响应:Pod 故障、资源不足、网络问题的自动诊断和恢复
- AWS 服务集成:与 CloudWatch、Systems Manager、EKS API 的原生联动
Kagent 架构
Kagent 遵循 Kubernetes Operator 模式,由 Controller、CRD、Webhook 构成。
组件说明
| 组件 | 角色 | 描述 |
|---|---|---|
| Kagent 控制器 | 协调循环 | 检测 CRD 更改并将资源协调到所需状态 |
| 准入 Webhook | 验证/转换 | 在创建/修改 CRD 时验证并设置默认值 |
| 指标服务器 | 指标收集 | 暴露代理状态和性能指标 |
| Agent CRD | 代理定义 | AI 代理的规范、模型和工具配置 |
| Tool CRD | 工具定义 | 定义代理使用的工具(API、搜索等) |
| Workflow CRD | 工作流定义 | 定义多代理协作工作流 |
组件交互
前置条件
- Kubernetes 集群(v1.25 以上)
- kubectl CLI 工具
- Helm v3(Helm 安装时)
- cert-manager(Webhook TLS 证书管理)
CRD 结构
Agent CRD
Agent CRD 声明式定义 AI Agent 的所有配置。以下是核心 Spec 结构:
apiVersion: kagent.dev/v1alpha1
kind: Agent
metadata:
name: customer-support-agent
namespace: ai-agents
spec:
# Agent 基本信息
displayName: "客户支持 Agent"
description: "响应客户咨询并创建工单的 AI Agent"
# 模型设置
model:
provider: openai # openai, anthropic, bedrock, vllm
name: gpt-4-turbo
endpoint: "" # 自定义端点(vLLM 等)
temperature: 0.7
maxTokens: 4096
apiKeySecretRef:
name: openai-api-key
key: api-key
# 系统 Prompt
systemPrompt: |
你是一个友好专业的客户支持 Agent。
# 使用的工具列表
tools:
- name: search-knowledge-base
- name: create-ticket
# 内存设置
memory:
type: redis
config:
host: redis-master.ai-data.svc.cluster.local
ttl: 3600
maxHistory: 50
# 伸缩设置
scaling:
minReplicas: 2
maxReplicas: 10
metrics:
- type: cpu
target:
averageUtilization: 70
keda:
enabled: true
triggers:
- type: prometheus
metadata:
metricName: agent_active_sessions
threshold: "50"
# 资源限制
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "500m"
# 可观测性设置
observability:
tracing:
enabled: true
provider: langfuse # langfuse, langsmith, cloudwatch
metrics:
enabled: true
port: 9090
Tool CRD
Tool CRD 定义 Agent 可使用的工具。工具类型有 api、retrieval、code、human。
主要字段:
| 字段 | 说明 | 示例 |
|---|---|---|
spec.type | 工具类型 | retrieval、api、code、human |
spec.description | LLM 选择工具时参考的说明 | "从知识库搜索文档" |
spec.retrieval | 向量存储连接设置 | Milvus、Pinecone 等 |
spec.api | REST API 调用设置 | 端点、认证、超时 |
spec.parameters | 输入参数 Schema | name、type、required、enum |
spec.output | 输出 Schema | JSON Schema 格式 |
Memory CRD
用于存储 Agent 对话上下文和状态的内存设置。
主要功能:
| 功能 | 说明 |
|---|---|
| 会话内存 | 基于 Redis/PostgreSQL 的短期对话记录(TTL 设置) |
| 对话压缩 | 超过阈值时用 LLM 摘要对话 |
| 长期内存 | 基于向量存储的 Agent 经验积累 |
| 内存类型 | redis、postgres、in-memory |
Workflow CRD
使用 Workflow CRD 定义多 Agent 工作流。
核心结构:
| 字段 | 说明 |
|---|---|
spec.input | 工作流输入参数定义 |
spec.steps | 逐步 Agent 执行定义(顺序/并行) |
spec.steps[].dependsOn | 依赖步骤指定(DAG 构建) |
spec.steps[].parallel | 并行执行与否 |
spec.output | 工作流最终输出映射 |
spec.errorHandling | 步骤/工作流失败时行为 |
spec.timeout | 整体工作流超时 |
spec.concurrency | 并发执行限制(queue/reject/replace) |