当前位置: 首页 > news >正文

用n8n工作流+DeepSeek大模型基于k8s做一个运维智能体

一、整体架构设计和思路

图片

新的工作流增加了一个核心的 AI 分析模块

1、监控: 定时获取所有非正常状态的 Pod。

2、数据收集: 对于发现的问题 Pod,不仅获取其基本信息,还要获取它的详细事件和日志。这是 AI 分析的关键上下文。

3、AI 分析: 将 Pod 的状态、事件和日志信息,打包成一个精心设计的提示词,发送给大语言模型(如 DeepSeek)。

4、智能决策: 要求 LLM 返回一个结构化的 JSON,包含根本原因分析建议的操作(例如:"restart_pod""escalate_to_human""ignore")。

5、执行/通知: 根据 LLM 的建议执行相应操作:

  • 如果建议 restart_pod,则删除 Pod。

  • 如果建议 escalate_to_human,则发送包含 AI 分析结果的高级告警给运维人员。

  • 如果建议 ignore,则记录日志并结束流程。


二、n8s中构建工作流

节点 1: Schedule Trigger (定时触发器)

这是工作流的入口。

节点类型:  Schedule Trigger

配置: 设置触发间隔,例如 Every Minute,这样智能体就会每分钟检查一次。

节点 2: HTTP Request (获取所有问题 Pod)

这个节点负责调用 K8s API,获取所有非正常状态的 Pod。

  • 节点类型: HTTP Request

  • 配置: 

1)Method: GET

2)URL: https://your-k8s-api-server/api/v1/pods

    • your-k8s-api-server是你的 K8s 集群 API Server 地址。如果 n8n 运行在集群内,可以使用 kubernetes.default.svc

3)Authentication: Generic Credential Type -> Header Auth

    • Name: Authorization

    • Value: Bearer YOUR_SERVICE_ACCOUNT_TOKEN (粘贴上一步获取的 Token)

4)Query Parameters:

    • fieldSelector: status.phase!=Running,status.phase!=Succeeded

    • 这个参数是关键,它只返回状态不是 Running 和 Succeeded 的 Pod,大大减少了需要分析的数据量。

5)Options:

    • Reject Unauthorized: 取消勾选 (如果你的 K8s API 使用自签名证书)。

节点 3: Code (准备上下文)

这个节点是数据准备的关键。它从第一个问题 Pod 中提取 name 和 namespace,供后续节点使用。

  • 节点类型: Code

  • 模式: Run Once for All Items

  • JavaScript 代码:

// 找到第一个处于 CrashLoopBackOff 状态的 Podconst pods = $input.all().map(item => item.json).filter(pod => {  if (pod.status && pod.status.containerStatuses) {    return pod.status.containerStatuses.some(container =>       container.state && container.state.waiting && container.state.waiting.reason === 'CrashLoopBackOff'    );  }  return false;});
if (pods.length > 0) {  const pod = pods[0];  return [{    json: {      podName: pod.metadata.name,      podNamespace: pod.metadata.namespace,      podDetails: pod // 保存完整的 Pod 信息    }  }];} else {  // 如果没有问题 Pod,返回空数组,工作流将在此停止  return [];}
节点 4: HTTP Request (获取 Pod 事件)

获取 Pod 的事件,这通常包含了错误原因(如镜像拉取失败、被 Liveness 探针杀死等)。

  • 节点类型: HTTP Request

  • 配置:

    • Method: GET

    • URL:https://your-k8s-api-server/api/v1/namespaces/{{ $json.podNamespace }}/events?fieldSelector=involvedObject.name={{ $json.podName }}

    • Authentication: 同节点2

节点 5: HTTP Request (获取 Pod 日志)

获取容器内部的日志,这是定位代码层面问题的直接证据。

  • 节点类型: HTTP Request

  • 配置:

    • Method: GET 

    • URL: https://your-k8s-api-server/api/v1/namespaces/{{ $json.podNamespace }}/pods/{{ $json.podName }}/log

    • Authentication: 同节点2

节点 6: OpenAI (AI 分析与决策)

这是整个工作流的大脑。

  • 节点类型: OpenAI

  • 配置:

    • Credential: 创建你的 OpenAI API Key 凭证。

    • Model: DeepSeek (或其它性价比更高的模型,以降低成本)

    • Prompt Text: 这是核心!一个精心设计的 Prompt。

你是一位资深的 Kubernetes 运维专家。请分析以下处于 CrashLoopBackOff 状态的 Pod 信息,并提供根本原因和修复建议。
**Pod 基本信息:**{{ $('Code').first().json.podDetails }}
**Pod 事件:**{{ $json }}
**Pod 日志:**{{ $('HTTP Request1').first().json }}
请根据以上信息进行分析,并以严格的 JSON 格式返回结果,包含 `root_cause` 和 `suggested_action` 两个字段。- `root_cause`: 对问题的根本原因进行简洁、准确的描述。- `suggested_action`: 建议采取的操作,只能是以下三个值之一:  - `restart_pod`: 如果问题是临时的,重启 Pod 可能解决。  - `escalate_to_human`: 如果问题是配置错误、镜像问题或需要人工介入的复杂情况。  - `ignore`: 如果问题不严重或可以自行恢复。
返回的 JSON 示例:{  "root_cause": "应用程序因缺少 'DATABASE_URL' 环境变量而无法启动。",  "suggested_action": "escalate_to_human"}
节点 7: Switch (智能路由)

根据 AI 的决策,将工作流路由到不同的分支。

  • 节点类型: Switch

  • 配置:

    • Rules:

      • Rule 1:

        • Value 1: {{ $json.suggested_action }}

          Operation: Equal

          Value 2: escalate_to_human

      • Rule 2:

        • Value 1: {{ $json.suggested_action }}

          Operation: Equal

          Value 2: restart_pod

      • Default: (处理 ignore 或其他未预料到的值)

节点 8, 9, 10: 执行分支
  • 节点 8 (连接到 Rule 1): HTTP Request (Delete Pod)

    • 配置: 与之前相同,用于重启 Pod。

  • 节点 9 (连接到 Rule 2)Slack (发送高级告警)

    • 配置: 与之前类似,但消息内容更丰富,包含 AI 的分析结果。

  • 节点 10 (连接到 Default): No Op, do nothing

    • 配置: 空操作节点,用于结束工作流。


三、完整工作流概览

图片

http://www.dtcms.com/a/536430.html

相关文章:

  • Java电商项目中的概念: 高并发、分布式、高可用、微服务、海量数据处理
  • Python + requests + pytest + allure + Jenkins 构建完整的接口自动化测试框架
  • 2025-10-27 Java AI学习路线
  • Jenkins Pipeline 多job依赖、触发多Job、并行执行及制品下载
  • 静态网站 服务器男女做暖暖到网站
  • PortableApps_U 便携式软件_Software
  • Map Set
  • 云渲染技术高效创作的三大核心支撑
  • Linux小课堂: HTTPS协议原理与Apache服务器配置实战
  • 51c大模型~合集37
  • 03-Machine-4-fft.py K230进行快速傅里叶变换、频率计算及幅值计算功能演示
  • 医院系统接口对接实战:从 WSDL 到 HTTP 的全流程解析
  • 【C++学习】对象特性--构造函数
  • 装修公司前十强郑州做网站优化
  • 绿色网站欣赏站点查询
  • 插件:@vitejs/plugin-basic-ssl
  • Docker使用详解:在ARM64嵌入式环境部署Python应用
  • 【微知】MAC笔记本如何重启tourchbar?(sudo pkill TouchBarServer)
  • Smartproxy API 代理 IP 提取指南——JSON-first 架构与参数化最佳实践
  • 统计过程能力指数在齿轮制造中的应用学习分享
  • 河北地矿建设集团官方网站昆山市网站建设
  • __金仓数据库平替MongoDB实战:制造业生产进度管理的国产化升级之路__
  • 电商设计就是网站设计吗乐清本地生活服务平台
  • html css js网页制作成品——似锦HTML+CSS网页设计(5页)附源码
  • 某教育大厂面试题解析:MySQL索引、Redis缓存、Dubbo负载均衡等
  • wordpress怎么加菜单阿里网站怎样做seo
  • 2025年损坏Excel文件修复工具推荐:一键恢复表格内容
  • 网站一直百度上搜不到是怎么回事素马杭州网站设计介绍
  • 基于 STM32 的智能水表流量计设计与实现 —— 数据采集与远程传输
  • 深度学习核心概念拆解:张量、模型、训练、推理