把智能体放进集群:AI Agent 与 Kubernetes 的架构对照笔记
AI Agent 和 Kubernetes 对比|附源码
在过去几年里,AI Agent 和 Kubernetes 分别成为两个技术领域中的高频关键词。
一个属于人工智能应用架构,强调“让 AI 具备规划、调用工具、执行任务和反馈迭代的能力”;另一个属于云原生基础设施,强调“让应用能够被自动化部署、调度、扩缩容和自愈”。
表面上看,AI Agent 和 Kubernetes 似乎属于完全不同的技术栈:
- AI Agent 面向智能任务执行;
- Kubernetes 面向容器编排和基础设施管理。
但如果从系统设计角度观察,它们其实有不少相似之处:都在解决“复杂任务如何被拆解、调度、执行、监控和恢复”的问题。
本文将从概念、架构、核心组件、工作流程、相似点、差异点以及源码示例等角度,对 AI Agent 和 Kubernetes 做一次系统化对比。
一、什么是 AI Agent?
AI Agent,通常翻译为“智能体”,是指一种能够基于目标自主进行推理、规划、调用工具并完成任务的软件系统。
一个典型的 AI Agent 不只是简单地调用一次大语言模型,而是具备如下能力:
- 理解目标
- 拆解任务
- 制定计划
- 调用工具
- 观察结果
- 根据反馈继续行动
- 直到任务完成或失败
例如,你给一个 AI Agent 下达任务:
帮我分析最近三个月某只股票的走势,并生成一份投资风险报告。
一个普通聊天机器人可能只是根据已有知识给出泛泛回答,而 AI Agent 可能会:
- 判断需要实时数据;
- 调用金融数据 API;
- 获取近三个月价格;
- 计算涨跌幅、波动率、成交量变化;
- 调用绘图工具生成趋势图;
- 总结风险点;
- 输出完整报告。
这就是 AI Agent 相比普通 LLM 应用更强的地方。
二、什么是 Kubernetes?
Kubernetes,简称 K8s,是一个开源的容器编排平台,最初由 Google 设计并开源,现在由 CNCF 维护。
Kubernetes 的核心目标是:
帮助开发者自动化部署、扩展和管理容器化应用。
在没有 Kubernetes 之前,如果我们要部署一个应用,通常需要手动做很多事情:
- 登录服务器;
- 拉取代码或镜像;
- 启动进程;
- 配置端口;
- 设置负载均衡;
- 处理服务宕机;
- 监控资源使用;
- 手动扩容或缩容。
而 Kubernetes 把这些能力抽象成标准资源,例如:
- Pod
- Deployment
- Service
- ConfigMap
- Secret
- Ingress
- Job
- CronJob
- StatefulSet
开发者只需要声明“我期望系统是什么状态”,Kubernetes 就会不断通过控制循环让真实状态趋近于期望状态。
例如,你声明:
我希望 nginx 应用始终有 3 个副本运行。
Kubernetes 就会自动保证:
- 少了就创建;
- 多了就删除;
- 某个 Pod 崩溃了就重新拉起;
- 节点故障了就调度到其他节点。
三、AI Agent 和 Kubernetes 的核心思想对比
虽然 AI Agent 和 Kubernetes 属于不同领域,但二者都有一个非常重要的共同点:
它们都不是简单执行一次命令,而是围绕目标进行持续调度和反馈控制。
可以这样理解:
| 对比维度 | AI Agent | Kubernetes |
|---|---|---|
| 主要目标 | 完成智能任务 | 管理容器化应用 |
| 核心输入 | 用户目标、上下文、工具描述 | YAML 声明式配置 |
| 核心能力 | 推理、规划、工具调用、记忆 | 调度、编排、扩缩容、自愈 |
| 执行单位 | Action、Tool Call、Step | Pod、Container、Job |
| 控制方式 | Agent Loop | Reconcile Loop |
| 状态管理 | Memory、Observation、History | etcd、API Server、Resource Status |
| 失败处理 | 重新规划、换工具、重试 | 重新调度、重启、回滚 |
| 典型场景 | 自动写代码、数据分析、客服、运维助手 | 微服务部署、弹性伸缩、服务治理 |
从这个表可以看到,AI Agent 更偏“认知层”和“任务执行层”,Kubernetes 更偏“基础设施层”和“资源调度层”。
四、AI Agent 的典型架构
一个简单的 AI Agent 通常包含以下模块:
User Goal
|
v
Planner / LLM
|
v
Tool Selector
|
v
Tool Execution
|
v
Observation
|
v
Memory
|
v
Next Action or Final Answer
可以拆成几个核心组件。
1. Planner:规划器
Planner 负责理解用户目标,并决定下一步该做什么。
例如:
用户目标:查询北京明天天气,并给出穿衣建议。
Planner 可能拆解为:
1. 调用天气 API 查询北京天气;
2. 根据温度、降雨、风力判断穿衣建议;
3. 返回自然语言结果。
2. Tool:工具
工具是 Agent 能力的扩展。
常见工具包括:
- 搜索引擎;
- 数据库查询;
- 文件读写;
- 代码执行器;
- HTTP API;
- 浏览器;
- Shell 命令;
- 各类业务系统接口。
如果没有工具,Agent 基本只能依赖模型自身知识;而有了工具之后,Agent 就可以和真实世界交互。
3. Memory:记忆
Memory 用来保存上下文和历史信息。
包括:
- 对话历史;
- 用户偏好;
- 工具调用结果;
- 中间推理步骤;
- 长期知识库。
4. Agent Loop:智能体循环
Agent 的关键不是一次性回答,而是循环执行:
思考 -> 行动 -> 观察 -> 再思考 -> 再行动 -> 完成
这与 Kubernetes 中的 Reconcile Loop 有明显相似性。
五、Kubernetes 的典型架构
Kubernetes 的整体架构可以分成控制平面和工作节点。
用户 / kubectl / CI/CD
|
v
API Server
|
v
etcd
|
v
Controller Manager Scheduler
|
v
Kubelet
|
v
Container Runtime
|
v
Pod
核心组件如下。
1. API Server
API Server 是 Kubernetes 的统一入口。
所有资源操作都要经过 API Server,比如:
- 创建 Deployment;
- 查询 Pod;
- 删除 Service;
- 更新 ConfigMap。
2. etcd
etcd 是 Kubernetes 的分布式键值存储,用于保存集群状态。
例如:
- 当前有哪些 Pod;
- Deployment 期望副本数是多少;
- Service 配置是什么;
- Secret 数据是什么。
3. Scheduler
Scheduler 负责调度 Pod 到合适节点。
它会考虑:
- CPU;
- 内存;
- 节点标签;
- 污点和容忍;
- 亲和性;
- 资源限制。
4. Controller Manager
Controller Manager 负责各种控制器,例如:
- Deployment Controller;
- ReplicaSet Controller;
- Node Controller;
- Job Controller;
- Endpoint Controller。
这些控制器会不断检查:
期望状态 == 实际状态?
如果不一致,就采取行动修正。
5. Kubelet
Kubelet 运行在每个工作节点上,负责真正拉起容器并汇报状态。
六、核心机制对比:Agent Loop vs Reconcile Loop
AI Agent 的核心循环可以表示为:
Goal -> Think -> Act -> Observe -> Think -> Act -> ... -> Finish
Kubernetes 的核心循环可以表示为:
Desired State -> Observe Current State -> Diff -> Act -> Observe Again
二者都体现了反馈控制思想。
AI Agent 示例
目标:生成一份销售分析报告
第 1 步:判断需要销售数据
第 2 步:调用数据库查询工具
第 3 步:观察查询结果
第 4 步:发现缺少同比数据
第 5 步:再次查询去年同期数据
第 6 步:生成图表和分析结论
Kubernetes 示例
目标:运行 3 个 nginx Pod
第 1 步:Controller 发现当前只有 1 个 Pod
第 2 步:创建 2 个新 Pod
第 3 步:Scheduler 分配节点
第 4 步:Kubelet 拉起容器
第 5 步:Controller 再次检查状态
第 6 步:确认当前有 3 个 Pod
二者区别在于:
- AI Agent 的“目标”通常是语义化、开放式、不确定的;
- Kubernetes 的“目标”通常是结构化、声明式、确定性的。
七、源码示例一:一个极简 AI Agent
下面用 Python 实现一个非常简单的 AI Agent。它不依赖复杂框架,只模拟 Agent 的基本结构:规划、工具调用、观察和输出。
1. 项目结构
simple-agent/
├── agent.py
└── tools.py
2. tools.py
# tools.py
import datetime
import random
def get_current_time(city: str) -> str:
"""
模拟查询城市当前时间。
实际项目中可以调用真实 API。
"""
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
return f"{city} 当前时间是 {now}"
def get_weather(city: str) -> str:
"""
模拟查询天气。
实际项目中可以接入高德、和风天气、OpenWeather 等 API。
"""
weather_list = ["晴", "多云", "小雨", "阴", "大风"]
temperature = random.randint(5, 32)
weather = random.choice(weather_list)
return f"{city} 明天天气:{weather},气温 {temperature}℃"
def calculate(expression: str) -> str:
"""
一个简单计算工具。
注意:真实项目不要直接 eval 用户输入,存在安全风险。
"""
try:
result = eval(expression)
return f"计算结果:{result}"
except Exception as e:
return f"计算失败:{str(e)}"
3. agent.py
# agent.py
from tools import get_current_time, get_weather, calculate
class SimpleAgent:
def __init__(self):
self.tools = {
"time": get_current_time,
"weather": get_weather,
"calculate": calculate
}
self.memory = []
def plan(self, user_input: str):
"""
一个非常简化的规划器。
真实 Agent 通常会使用 LLM 来判断应该调用哪个工具。
"""
if "天气" in user_input:
return {
"tool": "weather",
"args": self.extract_city(user_input)
}
if "时间" in user_input:
return {
"tool": "time",
"args": self.extract_city(user_input)
}
if "计算" in user_input:
expression = user_input.replace("计算", "").strip()
return {
"tool": "calculate",
"args": expression
}
return {
"tool": None,
"args": None
}
def extract_city(self, text: str) -> str:
"""
简单城市识别。
实际项目应使用 NER、LLM 或结构化参数提取。
"""
cities = ["北京", "上海", "广州", "深圳", "杭州", "成都"]
for city in cities:
if city in text:
return city
return "北京"
def run(self, user_input: str):
self.memory.append({
"role": "user",
"content": user_input
})
action = self.plan(user_input)
if action["tool"] is None:
answer = "我暂时无法处理这个任务,请尝试询问天气、时间或计算问题。"
self.memory.append({
"role": "assistant",
"content": answer
})
return answer
tool_name = action["tool"]
tool_args = action["args"]
observation = self.tools[tool_name](tool_args)
final_answer = f"我调用了工具 `{tool_name}`,得到结果:{observation}"
self.memory.append({
"role": "tool",
"content": observation
})
self.memory.append({
"role": "assistant",
"content": final_answer
})
return final_answer
if __name__ == "__main__":
agent = SimpleAgent()
print(agent.run("帮我查一下北京明天天气"))
print(agent.run("现在上海时间是多少"))
print(agent.run("计算 1024 * 8"))
运行效果类似:
我调用了工具 `weather`,得到结果:北京 明天天气:多云,气温 23℃
我调用了工具 `time`,得到结果:上海 当前时间是 2026-06-02 10:30:00
我调用了工具 `calculate`,得到结果:计算结果:8192
这个例子非常简单,但它已经包含了 Agent 的几个基本要素:
- 用户目标;
- 规划器;
- 工具选择;
- 工具执行;
- 观察结果;
- 记忆记录;
- 最终回答。
八、源码示例二:Kubernetes 部署一个 Web 应用
下面我们用 Kubernetes YAML 部署一个 nginx 服务。
1. deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-demo
labels:
app: nginx-demo
spec:
replicas: 3
selector:
matchLabels:
app: nginx-demo
template:
metadata:
labels:
app: nginx-demo
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
2. service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-demo-service
spec:
selector:
app: nginx-demo
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
3. 应用配置
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
4. 查看运行状态
kubectl get deployment
kubectl get pods
kubectl get svc
你会看到 Kubernetes 创建了 3 个 nginx Pod。
如果手动删除其中一个 Pod:
kubectl delete pod
Kubernetes 会自动重新创建一个新的 Pod,使副本数恢复到 3。
这就是 Kubernetes 的自愈能力。
九、AI Agent 和 Kubernetes 的相似之处
1. 都强调“目标驱动”
AI Agent 接收的是用户目标,例如:
帮我写一份竞品分析报告。
Kubernetes 接收的是期望状态,例如:
replicas: 3
虽然输入形式不同,但本质都是目标驱动。
AI Agent 的目标更偏自然语言;Kubernetes 的目标更偏结构化配置。
2. 都有调度能力
AI Agent 需要调度工具。
例如:
- 什么时候调用搜索;
- 什么时候调用数据库;
- 什么时候调用代码解释器;
- 什么时候调用业务 API。
Kubernetes 需要调度 Pod。
例如:
- Pod 应该运行在哪个节点;
- 哪个节点资源足够;
- 哪些节点满足亲和性规则;
- 哪些节点不可用。
因此,二者都有“根据当前状态选择执行资源”的过程。
3. 都依赖状态和反馈
AI Agent 会根据工具返回结果继续推理。
Kubernetes 会根据集群实际状态继续调整。
如果 AI Agent 查询数据库失败,它可能会:
- 重试;
- 换一个工具;
- 请求用户补充信息;
- 降级回答。
如果 Kubernetes 创建 Pod 失败,它可能会:
- 重新调度;
- 拉取镜像;
- 重启容器;
- 标记异常状态。
4. 都需要可观测性
AI Agent 需要记录:
- 每一步思考;
- 每次工具调用;
- 工具返回结果;
- token 消耗;
- 错误原因;
- 最终输出质量。
Kubernetes 需要观察:
- Pod 状态;
- 容器日志;
- CPU 和内存;
- 网络流量;
- 节点健康度;
- 事件信息。
如果没有可观测性,AI Agent 很容易变成不可调试的黑盒;Kubernetes 集群也会变成难以维护的复杂系统。
5. 都面临安全问题
AI Agent 的安全风险包括:
- Prompt Injection;
- 工具滥用;
- 数据泄露;
- 越权调用 API;
- 生成错误内容;
- 执行危险命令。
Kubernetes 的安全风险包括:
- RBAC 配置不当;
- Secret 泄露;
- 镜像漏洞;
- 容器逃逸;
- 网络策略缺失;
- 集群权限过大。
因此,在生产环境中,两者都必须严肃考虑权限边界和安全控制。
十、AI Agent 和 Kubernetes 的关键差异
1. 输入不同
AI Agent 通常接受自然语言输入。
例如:
帮我把今天的销售数据做成日报,并发到企业微信。
Kubernetes 通常接受结构化声明。
例如:
replicas: 5
image: my-app:v1.2.0
自然语言输入具有模糊性,而 YAML 配置更精确。
2. 执行结果确定性不同
Kubernetes 的行为相对确定。
如果 Deployment 配置正确,它通常会按照规则创建对应数量的 Pod。
AI Agent 的行为更不确定,因为它依赖 LLM 推理。即使输入相同,也可能因为模型采样、上下文变化、工具返回变化而产生不同结果。
3. 错误类型不同
Kubernetes 常见错误包括:
- 镜像拉取失败;
- 资源不足;
- 探针失败;
- 配置错误;
- 节点不可用;
- 网络异常。
AI Agent 常见错误包括:
- 理解错目标;
- 调错工具;
- 参数提取错误;
- 幻觉;
- 无限循环;
- 忽略关键约束;
- 生成不可执行计划。
4. 评估方式不同
Kubernetes 的评估指标较明确:
- Pod 是否 Ready;
- 服务是否可访问;
- 延迟是否可接受;
- CPU/内存是否稳定;
- 副本数是否符合预期。
AI Agent 的评估更复杂:
- 任务是否真正完成;
- 输出是否准确;
- 推理过程是否合理;
- 工具调用是否高效;
- 是否遵守安全边界;
- 用户是否满意。
十一、如果把 AI Agent 类比成 Kubernetes
为了更直观理解,我们可以做一个类比:
| Kubernetes | AI Agent |
|---|---|
| API Server | Agent 接收用户任务的入口 |
| YAML 资源声明 | 用户目标或任务描述 |
| Controller | Agent Planner |
| Scheduler | Tool Selector |
| Pod | Tool Call / Action |
| Kubelet | Tool Executor |
| etcd | Memory / State Store |
| Event | Observation |
| Reconcile Loop | Agent Loop |
| RBAC | Tool Permission |
| Namespace | Agent Workspace / Tenant |
| HPA | 动态调整任务执行策略 |
这个类比并不完全严格,但有助于理解 AI Agent 系统也需要“工程化治理”。
尤其是在复杂企业场景中,一个 AI Agent 平台往往需要具备类似 Kubernetes 的能力:
- 多租户隔离;
- 权限控制;
- 工具注册;
- 执行沙箱;
- 状态持久化;
- 任务队列;
- 失败重试;
- 运行日志;
- 资源配额;
- 审计追踪。
十二、进一步源码:用 Kubernetes Job 运行 Agent 任务
在真实场景中,我们甚至可以把 AI Agent 部署到 Kubernetes 上,让 Kubernetes 负责运行 Agent 任务。
例如,一个 Agent 任务可以被封装成容器镜像,然后通过 Kubernetes Job 执行。
1. agent_job.py
# agent_job.py
import os
import time
def run_agent_task(task: str):
print(f"开始执行 Agent 任务:{task}")
# 模拟任务执行
steps = [
"理解用户目标",
"拆解任务步骤",
"调用外部工具",
"分析工具返回结果",
"生成最终报告"
]
for step in steps:
print(f"执行步骤:{step}")
time.sleep(1)
print("Agent 任务执行完成")
if __name__ == "__main__":
task = os.getenv("AGENT_TASK", "默认任务:生成日报")
run_agent_task(task)
2. Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY agent_job.py /app/agent_job.py
CMD ["python", "agent_job.py"]
构建镜像:
docker build -t agent-job-demo:1.0 .
如果使用本地 minikube,可以执行:
minikube image load agent-job-demo:1.0
3. Kubernetes Job YAML
apiVersion: batch/v1
kind: Job
metadata:
name: agent-report-job
spec:
backoffLimit: 2
template:
metadata:
labels:
app: agent-report-job
spec:
restartPolicy: Never
containers:
- name: agent
image: agent-job-demo:1.0
imagePullPolicy: IfNotPresent
env:
- name: AGENT_TASK
value: "分析昨天销售数据,并生成日报"
执行:
kubectl apply -f agent-job.yaml
kubectl get jobs
kubectl get pods
kubectl logs
这样,AI Agent 负责任务智能执行,Kubernetes 负责运行环境、调度、重试和资源管理。
这其实是一个非常常见的落地模式:
Agent 做“大脑”,Kubernetes 做“身体和基础设施”。
十三、生产环境实践建议
1. AI Agent 不应该无限自主
很多人设计 Agent 时喜欢追求“完全自主”,但在生产环境中,这往往非常危险。
建议增加:
- 最大执行步数;
- 最大 token 限制;
- 工具调用白名单;
- 人工确认节点;
- 高风险操作拦截;
- 审计日志。
例如删除数据、发送邮件、转账、执行 Shell 命令等操作,不应完全自动放行。
2. Kubernetes 不应该裸奔
Kubernetes 功能强大,但默认配置不等于生产可用。
生产环境应关注:
- RBAC 最小权限;
- NetworkPolicy;
- 镜像安全扫描;
- Secret 加密;
- Pod Security Standards;
- Resource Requests 和 Limits;
- Liveness/Readiness Probe;
- 日志和监控系统;
- 备份 etcd。
3. Agent 平台可以借鉴 Kubernetes 思想
如果你正在设计一个企业级 Agent 平台,可以借鉴 Kubernetes 的设计理念:
声明式任务
用户不直接指定每一步怎么做,而是声明目标:
{
"task": "生成本周销售分析报告",
"output": "pdf",
"deadline": "2026-06-02 18:00:00"
}
控制循环
系统不断检查:
任务是否完成?
是否失败?
是否需要重试?
是否需要人工介入?
是否超过预算?
插件化工具
类似 Kubernetes 的 CRD 和 Operator,Agent 工具也可以插件化。
例如:
{
"name": "query_sales_database",
"description": "查询销售数据库",
"permission": "read:sales",
"timeout": 10
}
权限隔离
不同 Agent 只能访问授权工具。
例如:
- 财务 Agent 可以访问财务系统;
- HR Agent 可以访问人事系统;
- 客服 Agent 只能访问工单系统;
- 运维 Agent 需要受控访问日志和监控。
十四、未来趋势:Agentic Cloud Native
未来,AI Agent 和 Kubernetes 很可能会进一步融合,形成一种新的工程模式:Agentic Cloud Native。
也就是说:
- Agent 帮助人类理解和操作复杂系统;
- Kubernetes 提供稳定、弹性、可扩展的运行底座;
- LLM 负责推理和决策;
- 云原生工具负责执行和治理。
例如,在运维场景中,一个 AI SRE Agent 可以:
- 发现某服务错误率升高;
- 查询 Prometheus 指标;
- 查询 Loki 日志;
- 分析最近部署记录;
- 判断可能是新版本引入问题;
- 建议回滚;
- 在人工确认后执行
kubectl rollout undo; - 继续观察服务是否恢复。
这类系统并不是让 AI 取代 Kubernetes,而是让 AI Agent 成为 Kubernetes 之上的智能操作层。
十五、总结
AI Agent 和 Kubernetes 看似属于两个世界:
- 一个是智能应用;
- 一个是基础设施。
但从系统架构角度看,它们都体现了现代复杂系统的核心思想:
目标驱动、状态反馈、自动调度、持续修正。
AI Agent 的优势在于理解自然语言目标、处理开放式任务、调用工具完成复杂流程;Kubernetes 的优势在于稳定管理容器应用、自动调度资源、保障系统高可用。
二者不是替代关系,而是互补关系:
- AI Agent 负责智能决策和任务执行;
- Kubernetes 负责运行环境和资源编排。
如果说 Kubernetes 是云原生时代的操作系统,那么 AI Agent 很可能会成为智能应用时代的自动化执行层。
未来优秀的工程系统,很可能不是单纯依赖 AI,也不是单纯依赖 Kubernetes,而是将二者结合起来:
用户目标
-> AI Agent 理解和规划
-> 调用工具或生成任务
-> Kubernetes 调度和运行
-> 监控反馈
-> Agent 再次分析和优化
这正是 AI 与云原生融合的方向。