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

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

本文基于官方 Docker 文档,将 Hermes Agent 迁移到 Kubernetes / K3s 环境,使用 StatefulSet 管理持久化工作负载。 1. 前置准备 K3s 或 K8s 集群已就绪(本文以 K3s 为例) 节点上已有 containerd(K3s 默认内置) 推荐安装 nerdctl 作为容器管理工具(参考:在 K3s 节点上安装并使用 nerdctl) 镜像:nousresearch/hermes-agent:latest 2. 初始化配置(持久化数据目录) 在首次运行前,需要先执行一次 Setup Wizard,将 API Keys 等配置写入宿主机目录,再挂载进容器使用。 ...

April 27, 2026 | 2 分钟 | 814 字 | Tianlun Song
在 K3s 节点上安装并使用 nerdctl

在 K3s 节点上安装并使用 nerdctl

适用场景:K3s 默认不附带 nerdctl,但其内置的 containerd 与 nerdctl 完全兼容。本教程讲解如何在 K3s 节点上以最小代价安装 nerdctl,并正确指向 K3s 的 containerd socket,无需重复安装 containerd 或 CNI。 ...

April 27, 2026 | 4 分钟 | 1541 字 | Tianlun Song
kubernetes 的挂载传播(mount propagation)机制

kubernetes 的挂载传播(mount propagation)机制

以下内容转载自:kubernetes 的挂载传播(mount propagation)机制 概述 今天在看 kubectl-debug 这个项目的时候,看到其部署文件的 volumeMounuts 中使用了一个 mountPropagation 字段,因为不清楚这个字段的作用,就做了一下了解。mount propagation 背后的东西还是很多的,因此整理了这篇文章,顺便梳理一下知识点。 ...

August 7, 2025 | 5 分钟 | 2075 字 | Tianlun Song
AI提效之使用 cherry-studio + k8sgpt 实现 AI 巡检 k8s

AI提效之使用 cherry-studio + k8sgpt 实现 AI 巡检 k8s

k8sgpt 能够赋予每个人的 Kubernetes 超能力,能够用简单的语言扫描 Kubernetes 集群、诊断和分类问题。利用 k8sgpt 的 mcp 服务,可以为 LLM 赋予访问 k8s 集群的可能性。 工作原理图: sequenceDiagram actor U as User participant CS as Cherry Studio participant KG as k8sgpt participant K as K8s API Server U->>+CS: Add k8sgpt MCP server CS->>+KG: Check k8sgpt KG-->>-CS: k8sgpt is work CS-->>-U: Success to Add MCP U->>+CS: Ask some Question about K8s cluster CS->>+KG: Get someinfo throuth MCP KG->>+K: Get Cluster Info By API K-->>-KG: Return Cluster info KG-->>-CS: Return Info About K8s CS-->>CS: Handle Info CS-->>-U: Return Answer about K8s cluster 安装 k8sgpt 首先安装 k8sgpt 工具: ...

July 29, 2025 | 2 分钟 | 818 字 | Tianlun Song
Octant - 以开发人员为中心的开源 Kubernetes Web 界面

Octant - 以开发人员为中心的开源 Kubernetes Web 界面

TL;DR Octant 是一个以开发人员为中心的开源 Kubernetes Web 界面,可让您检查 Kubernetes 集群及其应用程序,能够帮助开发人员更好理解 Kubernetes 集群复杂性的平台。在这里发现的。 虽然 VMware 已结束该项目的积极开发 ,但看起来确实很好用,收藏备用。 ...

April 28, 2025 | 1 分钟 | 117 字 | Tianlun Song
解决 Nginx Ingress returns 413 Entity Too Large

解决 Nginx Ingress returns 413 Entity Too Large

TL;DR 配置 ingress 服务时调整一下大小即可: apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress-with-annotations annotations: nginx.org/proxy-connect-timeout: "30s" nginx.org/proxy-read-timeout: "20s" nginx.org/client-max-body-size: "4m" nginx.org/server-snippets: | location / { return 302 /coffee; } spec: rules: - host: cafe.example.com http: paths: - path: /tea pathType: Prefix backend: service: name: tea-svc port: number: 80 - path: /coffee pathType: Prefix backend: service: name: coffee-svc port: number: 80 References Nginx Ingress returns 413 Entity Too Large Advanced configuration with Annotations

April 21, 2025 | 1 分钟 | 82 字 | Tianlun Song
【转】k8s 认知路线

【转】k8s 认知路线

From V 以下内容转载自 https://www.v2ex.com/t/968514#r_13557021 k8s 这个东西真的内容太多了,没有啥系统性的资料,里面各种知识点真的没法说,太多了,最好的就是看官方文档,并且结合工作当中的实践慢慢积累,才能由浅入深,只是看文档想掌握深点,个人感觉很困难。 ...

April 21, 2025 | 3 分钟 | 1041 字 | Tianlun Song
nginx-ingress 配置路由 302

nginx-ingress 配置路由 302

demo ingress 这个实例中,实现将 访问 https://image.frytea.com/Avatar.jpg 请求302到 https://image.frytea.com/i/Avatar.jpg apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app namespace: imagehost annotations: cert-manager.io/cluster-issuer: "dnspod-cluster-issuer" nginx.ingress.kubernetes.io/configuration-snippet: | location = /Avatar.jpg { return 301 https://image.frytea.com/i/Avatar.jpg$is_args$args; } spec: ingressClassName: nginx tls: - hosts: - image.frytea.com - imagehost-cdn.frytea.com - cdn-imagehost.frytea.com secretName: image-frytea-com-tls rules: - host: image.frytea.com http: paths: - path: / pathType: Prefix backend: service: name: app port: name: web 直接配置会提示报错: ...

April 15, 2025 | 2 分钟 | 522 字 | Tianlun Song
k8s 触发 pod 重新拉取镜像平滑升级的方法

k8s 触发 pod 重新拉取镜像平滑升级的方法

下面介绍更新 Deployment 以重新拉取相同标签镜像的方法,不要只会杀 pod 触发了,个人最喜欢方法二。 当镜像名称和标签都没有变化,但需要重新拉取镜像时(比如镜像内容已更新但标签保持不变),可以采用以下方法: ...

April 10, 2025 | 2 分钟 | 517 字 | Tianlun Song
k8s csi-driver-nfs的一个坑

k8s csi-driver-nfs的一个坑

TL;DR 发现 k8s csi 组的社区项目 csi-driver-nfs v4.10 到 v4.11 至少这两个版本存在删除 pv 时会连带将整个根删除的问题。 声明 StorageClass 时虽然支持 subDir ,类似这样: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-aliyun-gz provisioner: nfs.csi.k8s.io parameters: share: "/csi" server: "28364f4a1fa-eok75.cn-guangzhou.nas.aliyuncs.com" #server: "172.26.12.20" #subDir: "${pvc.metadata.namespace}/${pvc.metadata.name}" reclaimPolicy: Delete #volumeBindingMode: WaitForFirstConsumer volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: # - nolock,tcp,noresvport - vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 但如果类似这样使用 subDir 声明路径,同命名空间下的其他 pvc 删除,会导致整个 subDir 根目录都被删除。目前官方 pr 已经修复,但实测还是有问题,有空再研究一下代码,不知道是不是刻意为之。 ...

March 31, 2025 | 1 分钟 | 334 字 | Tianlun Song