Hermes Agent — 在 K3s / K8s 中运行指南

💡 原文中文,约3300字,阅读约需8分钟。
📝

内容提要

本文介绍在 K3s/K8s 中部署 Hermes Agent:先用 nerdctl 运行 setup 容器,将 API 密钥等配置写入宿主机 /var/lib/hermes-data 目录;再用 StatefulSet 部署 Gateway 后台服务(端口 8642)和 Dashboard 仪表盘(端口 9119),二者共享持久化存储,Dashboard 以只读方式挂载。可通过 kubectl port-forward 安全访问仪表盘,并用 kubectl exec 进入 Gateway 容器运行交互式 CLI 聊天。

🔎

延伸解读

持久化数据目录的设计与作用

文章将配置、会话、记忆等数据统一存放在宿主机 /var/lib/hermes-data 目录,并通过 PVC 挂载到容器。这种设计使 Agent 的状态与容器生命周期解耦,即使 Pod 重建,数据也不会丢失。同时,Gateway 和 Dashboard 共享同一存储,Dashboard 以只读方式挂载,避免误写。读者需注意,首次部署前必须通过 setup 容器完成初始化,否则容器可能因缺少配置而无法正常启动。

Gateway 与 Dashboard 的协作方式

Gateway 作为后台服务运行在 8642 端口,负责核心逻辑;Dashboard 运行在 9119 端口,通过环境变量 GATEWAY_HEALTH_URL 指向 Gateway 的 Service DNS 名称进行健康检查。两者通过 ClusterIP 服务在集群内通信,不直接对外暴露。这种架构将前端展示与后端处理分离,便于独立扩缩容和权限控制。读者应确保 Dashboard 能解析到 Gateway 的 DNS 名称,否则健康检查会失败。

安全访问与运维建议

文章建议使用 kubectl port-forward 访问 Dashboard,而非直接暴露服务,这能减少攻击面。同时,交互式 CLI 聊天需通过 kubectl exec 进入 Gateway 容器执行。这些操作都依赖集群的 RBAC 和网络策略。读者在实际部署时,应根据团队安全要求配置适当的 NetworkPolicy 和访问控制,避免未授权访问。此外,资源请求与限制已给出参考值,可按实际负载调整。

❓

Q&A

如何在K3s/K8s中部署Hermes Agent?

部署Hermes Agent需要先使用nerdctl运行setup容器初始化配置,将API密钥等写入宿主机/var/lib/hermes-data目录;然后通过StatefulSet部署Gateway后台服务(端口8642)和Dashboard仪表盘(端口9119),二者共享持久化存储,Dashboard以只读方式挂载。

Hermes Agent的初始化配置具体怎么做?

在目标节点上创建数据目录/var/lib/hermes-data,然后使用nerdctl运行一次性setup容器:sudo nerdctl run -it --rm -v /var/lib/hermes-data:/opt/data nousresearch/hermes-agent:latest setup。配置完成后,数据目录包含.env、config.yaml、SOUL.md、sessions、memories、skills、cron、hooks、logs、skins等文件。

Gateway后台服务的StatefulSet配置有哪些关键点?

Gateway StatefulSet的关键配置包括:使用镜像nousresearch/hermes-agent:latest,启动参数为["gateway", "run"],暴露端口8642,挂载持久化存储到/opt/data,设置资源请求和限制(如内存1Gi-4Gi,CPU 500m-2),并可通过nodeSelector指定节点。

Dashboard仪表盘如何部署和访问?

Dashboard通过StatefulSet部署,使用镜像nousresearch/hermes-agent:latest,启动参数为["dashboard"],暴露端口9119,以只读方式挂载数据目录。可通过kubectl port-forward -n hermes svc/hermes-dashboard 9119:9119安全访问,浏览器打开http://localhost:9119。

如何运行Hermes Agent的交互式CLI聊天?

使用kubectl exec进入Gateway容器运行交互式CLI:kubectl exec -it -n hermes gateway-0 -- /opt/hermes/.venv/bin/hermes。

Hermes Agent在K8s中需要哪些前置准备?

前置准备包括:K3s或K8s集群已就绪,节点上已有containerd(K3s默认内置),推荐安装nerdctl作为容器管理工具,并确保镜像nousresearch/hermes-agent:latest可用。

🏷️

标签

➡️

继续阅读