k8s部署dify详细过程
一、概述
二、准备工作
前提条件
硬件
软件
镜像推送
下载镜像
docker pull postgres:15-alpine
docker pull redis:6-alpine
docker pull semitechnologies/weaviate:1.19.0
docker pull nginx:latest
docker pull langgenius/dify-plugin-daemon:0.0.6-local
docker pull langgenius/dify-sandbox:0.2.11
docker pull ubuntu/squid:latest
docker pull langgenius/dify-api:1.1.3
docker pull langgenius/dify-web:1.1.3
推送镜像
这里使用shell脚本完成
#!/bin/bash images="postgres:15-alpine
redis:6-alpine
semitechnologies/weaviate:1.19.0
nginx:latest
langgenius/dify-plugin-daemon:0.0.6-local
langgenius/dify-sandbox:0.2.11
ubuntu/squid:latest
langgenius/dify-api:1.1.3
langgenius/dify-web:1.1.3" # 遍历镜像列表,并推送到harbor
for line in $images; do
#echo "$line"
docker tag $line harbor.qq.com:8083/dify/$line
docker push harbor.qq.com:8083/dify/$line
done
注意修改harbor的的地址为实际访问地址
登录到harbor,查看镜像

创建命名空间以及密钥
kubectl create namespace dify
kubectl create secret docker-registry harbor-key --docker-server=harbor.qq.com:8083 --docker-username=devops --docker-password=1sB5r9UShgK5 --namespace=dify
注意:修改harbor地址,用户名,密码。
下载部署yaml
yaml已经写好了,推送到我个人的github,地址:https://github.com/987334176/dify-k8s
下载项目后,进入文件夹1.1.3
目录结构
env --> 全局环境变量
pvc --> 所有组件,统一使用一个pvc来进行持久化存储
databases --> 数据库相关:postgresql,redis,weaviate
middleware --> 中间件相关:plugin-daemon,sandox,ssf-proxy,nginx
services --> 服务相关:api,web,worker
三、创建全局环境变量
这里有500个多个变量,直接一键运行
kubectl apply -f env/env.yaml
四、创建pv和pvc
创建storageClass,因为pv和pvc必须是同一个storageClass才能绑定成功
kubectl apply -f pvc/storageClass.yaml
注意:修改NFS 服务端的共享路径
创建pv,pvc。注意:这里的pv是自建的NFS,请根据实际情况修改
kubectl apply -f pvc/pv.yaml
kubectl apply -f pvc/pvc.yaml
查看pvc状态,注意:请确保pvc状态为Bound
# kubectl -n dify get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
dify-pvc Bound dify 10Gi RWX nfs-storage <unset> 12m
服务器已经挂载好了NFS,进入到NFS根目录
cd /mnt/nfs_share
创建dify相关持久化文件,并设置权限
mkdir -p dify/volumes/db/data
mkdir -p dify/volumes/redis/data
mkdir -p dify/volumes/weaviate
mkdir -p dify/volumes/plugin_daemon
mkdir -p dify/volumes/app/storage
chmod 777 -R dify
五、数据库相关
postgresql
修改文件postgres-StatefulSet.yaml
vi databases/postgresql/postgres-StatefulSet.yaml
修改红色部分,增加了密钥,改了镜像地址
spec:
imagePullSecrets:
- name: harbor-key
terminationGracePeriodSeconds: 10
containers:
- name: postgres
image: harbor.qq.com:8083/dify/postgres:15-alpine
发布应用
kubectl apply -f databases/postgresql/postgres-StatefulSet.yaml
kubectl apply -f databases/postgresql/postgres-Service.yaml
查看postgresql日志
# kubectl -n dify logs -f postgres-0
...
UTC [72] WARNING: no usable system locales were found
performing post-bootstrap initialization ...
第一次会出现,pod到这里就终止了,不用管
再次查看日志。
# kubectl -n dify logs -f postgres-0
2025-04-05 16:29:11.415 UTC [1] LOG: database system is ready to accept connections
2025-04-05 16:29:13.707 UTC [46] FATAL: database "postgres" does not exist
2025-04-05 16:29:18.721 UTC [53] FATAL: database "postgres" does not exist
...
提示数据库postgres不存在,因为在全局configMap里面,POSTGRES_DB的值为dify,所以默认的postgres不会创建。
这个是不影响dify运行的,但是postgres的健康检查命令,必须要这个数据库存在,否则会一直发日志。
手动创建postgres
kubectl -n dify exec -it postgres-0 -- createdb postgres
再次查看日志,就不会再出现了。
进入容器,查看dify数据库是否创建完成
# kubectl -n dify exec -it postgres-0 -- /bin/bash
postgres-0:/# pg_isready -U $PGUSER -d $POSTGRES_DB
/var/run/postgresql:5432 - accepting connections
出现accepting connections,说明连接成功了
111
k8s部署dify详细过程的更多相关文章
- .NetCore 使用k8s部署服务的过程中需要注意的地方以及遇到的问题
这里开始我准备了3台测试服务器,这里我使用了JumpServer管理起来了,这里我们来看下: Master :192.168.0.236 Node1:192.168.0.237 Node2:192.1 ...
- HBase 1.2.6 完全分布式集群安装部署详细过程
Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Bigtable思想的开源实现,可在廉价的PC Server上搭建大规模结构化存 ...
- 拥抱云原生,如何将开源项目用k8s部署?
微信搜索[阿丸笔记],关注Java/MySQL/中间件各系列原创实战笔记,干货满满. k8s以及云原生相关概念近年来一直比较火热,阿丸最近搞了个相关项目,小结一下. 本文将重点分享阿里开源项目otte ...
- 最简单的 K8S 部署文件编写姿势,没有之一!
1. 头疼编写K8S部署文件? K8S yaml 参数很多,需要边写边查? 保留回滚版本数怎么设? 如何探测启动成功,如何探活? 如何分配和限制资源? 如何设置时区?否则打印日志是GMT标准时间 如何 ...
- 部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0)
部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0) 部署Bookinfo示例程序 在下载的Istio安装包的samples目录中包含了示例应用程序. ...
- 记录一次用宝塔部署微信小程序Node.js后端接口代码的详细过程
一直忙着写毕设,上一次写博客还是元旦,大半年过去了.... 后面会不断分享各种新项目的源码与技术.欢迎关注一起学习哈! 记录一次部署微信小程序Node.js后端接口代码的详细过程,使用宝塔来部署. 我 ...
- spinnaker自动发布k8s部署应用<一>
一.准备环境 !docker-ce---17.06.2-ce !k8s集群----1.11.1 !helm部署工具---helm-v2.10.0 !spinnaker-charts---spinnak ...
- Jenkins+Git+Docker+K8s部署
准备工作 Jenkins已安装 Docker和K8s部署运行成功 代码管理工具使用Git 最近公司项目使用Jenkins+Git+Docker+K8s进行持续化构建部署,这里笔者整理了一下构建部署的相 ...
- Kubernetes(k8s)部署redis-cluster集群
Redis Cluster 提供了一种运行 Redis 安装的方法,其中数据 在多个 Redis 节点之间自动分片. Redis Cluster 还在分区期间提供了一定程度的可用性,这实际上是在某些节 ...
- K8S部署之kubeadm
K8S部署笔记 一.集群环境说明 主机名 IP地址 说明 k8s-master01 192.168.1.107 master节点 k8s-master02 192.168.1.108 master节点 ...
随机推荐
- typedef的最新理解
1.typedef的常规用法 typedef unsigned int UNIT; UINT b; 需要注意的地方有下面几点: ①define 前面替代后面, typedef后面替代前面,这个不要记 ...
- LinkedList的源码
LinkedList LinkedList是通过双向链表去实现的,他的数据结构具有双向链表的优缺点,既然是双向链表,那么的它的顺序访问效率会非常高,而随机访问的效率会比较低,它包含一个非常重要的私有内 ...
- 微信小程序slot(二)
在组件的 wxml 中可以包含 slot 节点,用于承载组件使用者提供的 wxml 结构. 默认情况下,一个组件的 wxml 中只能有一个 slot .需要使用多 slot 时,可以在组件 js 中声 ...
- 全网最简单DeepSeek-R1本地部署教程
1.安装ollama 打开ollama网址:https://ollama.com/ 选择你电脑的系统进行下载 我的电脑是windows的就点击windows然后点击下载即可 下载完毕后双击打开下载的. ...
- Doris建明细测试表,导入测试数据
分区.分桶.明细表 测试用户表 CREATE TABLE user_info( dt DATE, id varchar(36) NOT NULL DEFAULT '10', user_name var ...
- Luogu P10838 『FLA - I』庭中有奇树 题解 [ 绿 ] [ 二分 ] [ 双指针 ] [ 树的遍历 ]
庭中有奇树:很多算法揉在一起的好题. 转化题意 因为要封锁 \(m\) 条路径,根据贪心思想,他一定会封锁最短的 \(m\) 条路径.所以我们能走的最短传送路径就是最短的第 \(m+1\) 条路径. ...
- 【忍者算法】从十字路口相遇到链表交点:探索相交链表问题|LeetCode第160题 相交链表
从十字路口相遇到链表交点:探索相交链表问题 生活中的相遇问题 想象两个人从不同的地方出发,最后在一个十字路口相遇.他们可能走过不同长度的路程,但最终会在同一个点汇合.这就很像我们今天要讨论的相交链表问 ...
- axurerp9怎么汉化:Axure RP9 中文激活安装教程
Axure RP 9是一款一款专业级快速产品原型设计工具,使用它可以让用户快速.高效创建应用软件或Web网站的线框图.流程图.原型和规格说明文档.采用了极简主义的设计,界面布局更加清爽简洁,操作也非常 ...
- 升级 element-ui 2.15.7 后遇到 el-date-picker 警告问题
近期把 element-ui 升级到了官网最新的 2.15.7 版本,无意间发现控制台出现了 Prop being mutated: "placement" 警告,完整警告:
- 使用Go复刻skiplist核心功能
0.引言 正好做LC每日一题要求实现一个跳表,于是学习了redis的扩展skiplist,并使用Go进行复刻学习.学习参考了文章:Redis内部数据结构详解(6)--skiplist - 铁蕾的个人博 ...