找回密码
 立即注册
首页 业界区 科技 喂饭级教程(番外篇)—— 在 K8s 上部署 Dify ...

喂饭级教程(番外篇)—— 在 K8s 上部署 Dify

人弧 2026-2-4 06:25:11
<h1 id="背景"><strong>背景</strong></h1>
<p>前一阵儿,OceanBase 联合 <strong>Dify[1]</strong> 在 v1.10.1 版本中完成了 MySQL 兼容开发。同时,Dify 也在这一版本中,也开始尝试通过一体化数据库来解决多组件架构带来的 Scale 复杂性,并选择了 OceanBase <strong>seekdb[2]</strong> 作为首个实践对象,详情请见:《Dify x OceanBase seekdb 使用指南》。</p>
<p>在上面这篇文章中,我们已经为大家介绍如何配置 Dify 的元数据库 / 向量数据库为 seekdb,以及如何通过 Dify 构建 AI 应用。</p>
<p>最近,我们又注意到一个趋势:<strong>越来越多的企业,都会选择在 K8s 上部署 Dify。无论是为了实现高可用、弹性伸缩,还是为了与企业内部 DevOps 体系打通,K8s 已成为 Dify 生产化落地的首选平台。</strong></p>

<p>
<img alt="" loading="lazy" data-src="https://img2024.cnblogs.com/blog/3648227/202601/3648227-20260104203229037-1235443834.png" >
</p>
<p>而且在 v2ex 和 linux.do 等各种技术论坛和交流群中,也总是能看到有关 “如何在 K8s 上部署 Dify” 的相关问题。</p>

<p>
<img alt="" loading="lazy" data-src="https://img2024.cnblogs.com/blog/3648227/202601/3648227-20260104203229002-207915556.png" >
</p>
<p>因此,我们这次又更新了一个《Dify x OceanBase seekdb》的番外篇,再为大家介绍一下如何在 K8s 上部署和使用 Dify。</p>
<p>欢迎大家关注 OceanBase 社区公众号 “老纪的技术唠嗑局”,在这个公众号中,会持续为大家更新与 #数据库、#AI、#OceanBase 相关的技术内容!</p>
<h1 id="在-k8s-上部署和使用-dify"><strong>在 K8s 上部署和使用 Dify</strong></h1>
<p>这个教程,会为大家介绍使用 Helm(K8s 包管理工具),通过三条命令,在 K8s 上部署一个配置了 seekdb 作为向量数据库和元数据库的 Dify。</p>
<p>说明:</p>
<p>如果还没有安装过 helm / kubectl,需要事先安装一下。不同操作系统的安装方式可能会略有不同。</p>
<ol>
<li>需要先有一个可以用于连接和测试的 K8s 集群。然后在 kubeconfig 配置文件(通常在 ~/.kube/config)中,已经配置过如何连接和操作这个 K8s 集群。</li>
</ol>
  1. <code >Desktop-of-Zlatan .kube % pwd && ls
  2. /Users/liboyang/.kube
  3. cache  config
  4. </code>
复制代码
<ol start="2">
<li>通过第一条命令,添加一个 Helm 仓库,这个仓库里存放了 Dify 应用的 chart(Helm Chart 是 K8s 应用的打包格式,包含部署所需的模板和配置)。</li>
</ol>
  1. <code >helm repo add dify https://chris-sun-star.github.io/dify-helm
  2. </code>
复制代码
<ol start="3">
<li>通过第二条命令,更新本地 Helm 仓库的索引,确保获取最新的 Chart 列表和版本信息。</li>
</ol>
  1. <code >helm repo update
  2. </code>
复制代码
<ol start="4">
<li>通过第三条命令,安装 Dify 应用到 K8s 集群中。这条命令会根据 Chart 中定义的模板,在 K8s 中创建资源,部署 Dify 应用。</li>
</ol>
  1. <code >helm install dify -n dify --create-namespace dify/dify
  2. </code>
复制代码
<p>说明:</p>
<p>这个 Helm 仓库里 Chart 的默认配置会把 Service 类型设为 NodePort。</p>
<p>也可以在上面 helm install 命令中,通过指定 —set service.type=LoadBalancer,创建 LoadBalancer 类型的 Service。</p>
<ol start="5">
<li>这里会输出一个 NOTES,复制并执行 NOTES 里面的  commands,就可以看到可以用于在浏览器里访问 Dify 服务的网页链接了(需要等待所有 Pod 都启动完成)。</li>
</ol>
  1. <code >NAME: dify
  2. LAST DEPLOYED: Thu Dec 25 11:33:45 2025
  3. NAMESPACE: dify
  4. STATUS: deployed
  5. REVISION: 1
  6. NOTES:
  7. 1. Get the application URL by running these commands:
  8.   export NODE_PORT=$(kubectl get --namespace dify -o jsonpath="{.spec.ports[0].nodePort}" services dify)
  9.   export NODE_IP=$(kubectl get nodes --namespace dify -o jsonpath="{.items[0].status.addresses[0].address}")
  10.   echo http://$NODE_IP:$NODE_PORT
  11. </code>
复制代码
<ol start="6">
<li>可以通过 kubectl 命令,在名为 dify 的命名空间中,列出所有正在运行的 Pod。</li>
</ol>
  1. <code >kubectl get pods -n dify
  2. </code>
复制代码
<ol start="7">
<li>这里可能需要等待几分钟,直到所有 Pod 全都处于 Running 状态。如果有 STATUS 异常的 Pod,会自动重启,直到成功为止。</li>
</ol>
  1. <code >liboyang@Desktop-of-Zlatan .kube % kubectl get pods -n dify
  2. NAME                                  READY   STATUS             RESTARTS      AGE
  3. dify-api-6f7647c56f-wqp8g             0/1     Running            4 (70s ago)   7m46s
  4. dify-plugin-daemon-74894f6f58-xlpsp   0/1     CrashLoopBackOff   6 (96s ago)   7m46s
  5. dify-proxy-55cf79f668-4srmb           1/1     Running            0             7m46s
  6. dify-redis-master-0                   1/1     Running            0             7m46s
  7. dify-redis-replicas-0                 1/1     Running            0             7m46s
  8. dify-redis-replicas-1                 1/1     Running            0             7m6s
  9. dify-redis-replicas-2                 1/1     Running            0             6m40s
  10. dify-sandbox-56f4df9558-zdvtf         1/1     Running            0             7m46s
  11. dify-seekdb-0                         1/1     Running            0             7m46s
  12. dify-web-849c44cf64-csjwb             1/1     Running            0             7m46s
  13. dify-worker-5ddfcd95d7-22fjp          0/1     Init:0/1           0             7m46s
  14. </code>
复制代码
<ol start="8">
<li>如果某个 Pod 响应慢,重启次数较多,则每次重启的时间间隔会依次递增,可以手动重启异常 Pod。</li>
</ol>
  1. <code >kubectl delete pod -n dify dify-plugin-daemon-74894f6f58-xlpsp
  2. </code>
复制代码
<ol start="9">
<li>最终预期的结果应该是:</li>
</ol>
  1. <code >liboyang@Desktop-of-Zlatan .kube % kubectl get pods -n dify
  2. NAME                                  READY   STATUS    RESTARTS        AGE
  3. dify-api-6f7647c56f-ndmnb             1/1     Running   1 (5h15m ago)   5h17m
  4. dify-plugin-daemon-74894f6f58-2rgf4   1/1     Running   0               5h18m
  5. dify-proxy-55cf79f668-4srmb           1/1     Running   0               5h29m
  6. dify-redis-master-0                   1/1     Running   0               5h29m
  7. dify-redis-replicas-0                 1/1     Running   0               5h29m
  8. dify-redis-replicas-1                 1/1     Running   0               5h29m
  9. dify-redis-replicas-2                 1/1     Running   0               5h28m
  10. dify-sandbox-56f4df9558-zdvtf         1/1     Running   0               5h29m
  11. dify-seekdb-0                         1/1     Running   0               5h29m
  12. dify-web-849c44cf64-csjwb             1/1     Running   0               5h29m
  13. dify-worker-5ddfcd95d7-22fjp          1/1     Running   0               5h29m
  14. </code>
复制代码
<ol start="10">
<li>最后,复制并执行 NOTES 里的 commands,获取网页链接地址,就可以在 K8s 上使用 Dify 构建应用了~</li>
</ol>
  1. <code >export NODE_PORT=$(kubectl get --namespace dify -o jsonpath="{.spec.ports[0].nodePort}" services dify)
  2.   export NODE_IP=$(kubectl get nodes --namespace dify -o jsonpath="{.items[0].status.addresses[0].address}")
  3.   echo http://$NODE_IP:$NODE_PORT
  4. </code>
复制代码

<p>
<img alt="" loading="lazy" data-src="https://img2024.cnblogs.com/blog/3648227/202601/3648227-20260104203228937-1902966538.png" >
</p>
<h1 id="使用-dify-构建-ai-应用"><strong>使用 Dify 构建 AI 应用</strong></h1>
<p>至于接下来如何通过 Dify 构建 AI 应用,就不是本文的重点内容了,大家可以参考 OceanBase 社区公众号之前发布的几篇文章:</p>
<ul>
<li>通过 Dify 构建基础 AI 应用
<ul>
<li>seekdb 简介</li>
</ul>
</li>
<li>使用 Dify Marketplace 中的 PowerMem 插件,让 AI 应用获得长期记忆
<ul>
<li>PowerMem 简介</li>
<li>PowerMem 快速上手</li>
</ul>
</li>
</ul>
<p>说明:</p>
<ul>
<li>上面在 K8s 上部署的 Dify 中,seekdb 就是被 Dify 依赖的向量数据库和元数据库~</li>
<li>PowerMem[3] 是一个 AI 记忆系统,支持让开发者快速集成到项目中,欢迎大家试用~</li>
</ul>

<p>
<img alt="" loading="lazy" data-src="https://img2024.cnblogs.com/blog/3648227/202601/3648227-20260104203228964-1022694048.png" >
</p>
<p><strong>参考资料</strong></p>
<p>[1] Dify: <em>https://github.com/langgenius/dify</em></p>
<p>[2] seekdb: <em>https://github.com/oceanbase/seekdb</em></p>
<p>[3] PowerMem: <em>https://github.com/oceanbase/powermem/tree/main</em></p><br>来源:程序园用户自行投稿发布,如果侵权,请联系站长删除<br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

2026-2-12 22:40:39

举报

您需要登录后才可以回帖 登录 | 立即注册