k8s分布式图床(k8s,metricsapi,vue3+ts)

image-manage

文档

warning 注意⚠️

1. 你需要至少一个mysql数据库 2. 你需要至少一个redis数据库 3. 你需要一个版本至少 kubernetes 1.29的集群(集群可选)

:::
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

单机部署(docker)

# clone the project
docker run -p 8080:8080 \-v  你的数据目录:/app\-e CONFIG_ISCLUSTERMODEENABLED=flase \-e SPRING_DATASOURCE_URL=jdbc:mysql://192.168.0.254:3306/image_manage?userUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai \-e SPRING_DATASOURCE_USERNAME=root \-e SPRING_DATASOURCE_PASSWORD=123456 \-e SPRING_REDIS_HOST=192.168.0.254 \-e SPRING_REDIS_PASSWORD=123456 \wnzzer/image-manage:latest
# 这里配置数据挂载卷,mysql,数据库和redis数据库

仓库地址: https://github.com/wnzzer/image-manage

tip⚠️

  1. 由于springboot的配置替换策略,如果要替换更多的springboot参数配置也是可行的

集群部署部署(k8s)‘

tip⚠️

  1. 这是应用监控资源必须的组件,如果没有该组件,k8s metrics api将无法工作,image-manage将无法搜集pod资源信息

  2. 安装最metrics server:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  1. 创建image-manage应用
wget  https://github.com/wnzzer/image-manage/releases/latest/download/image-manage-yaml
apiVersion: v1
kind: Namespace
metadata:name: image-manage---
# storeclass 声明,非常关键,用于动态分配卷
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-store-class
provisioner: image-manage-pv-provisioner  # 替换为实际的卷插件,我这里使用的是nfs的自动供应器,可以采用公用云或者其他pv自动供应器
reclaimPolicy: Delete
parameters:volumeSize: "1Gi"  # 应用存储图片的空间nfsServer: 192.168.0.254nfsPath: /volume1/nfs---
# configMap k8s权限配置到英雄
apiVersion: v1
kind: ConfigMap
metadata:namespace: image-managename: k8s-role-config
data:key1: ./admin.config---# 应用
apiVersion: apps/v1
kind: StatefulSet
metadata:namespace: image-managename: image-manage
spec:serviceName: "image-manage-headless-service"replicas: 2selector:matchLabels:app: image-managetemplate:metadata:labels:app: image-managespec:containers:- name: image-manageimage: wnzzer/image-manage:latestports: - containerPort: 8080env:- name: SPRING_PROFILES_ACTIVEvalue: "prod"- name: CONFIG_ISCLUSTERMODEENABLEDvalue: "false"- name: SPRING_DATASOURCE_URLvalue: "jdbc:mysql://192.168.0.254:3306/image_manage?userUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"- name: SPRING_DATASOURCE_USERNAMEvalue: "root"- name: SPRING_DATASOURCE_PASSWORDvalue: "123456"- name: SPRING_REDIS_HOSTvalue: "192.168.0.254"- name: SPRING_REDIS_PASSWORDvalue: "123456"volumeMounts:- name: local-volmountPath: "/app"- name: config-volume  # 挂载ConfigMap作为卷mountPath: "/etc/image-manage/config"  # 指定挂载ConfigMap的路径volumes:- name: config-volume  # 定义卷使用的ConfigMapconfigMap:name: k8s-admin-role-config  # 指定ConfigMap的名称volumeClaimTemplates:- metadata:name: local-volspec:accessModes: [ "ReadWriteOnce" ]storageClassName: "nfs-store-class"resources:requests:storage: 1Gi---
# 无头服务,用于应用的同步通信
apiVersion: v1
kind: Service
metadata:name: image-manage-headless-servicenamespace: image-manage
spec:clusterIP: Noneselector:app: image-manageports:- protocol: TCPport: 8080targetPort: 8080---
# cluster service 用于输出api
apiVersion: v1
kind: Service
metadata:name: image-manage-cluster-servicenamespace: image-manage
spec:type: ClusterIPports:- port: 8080targetPort: 8080selector:app: image-manage
kubectl apply -f image-manage.yaml
  1. 这里同样需要把redis,mysql修改成自己的配置
  2. 这里需要有自己的pv供应器,由于是pv动态创建,所以需要搭配自动供应器给statusfulSet创建pv,示例中使用的是nfs
  3. image-manage 需要搭配 k8s 配置进行对k8s api的访问,这里实例使用的是admin.conf,使用configmap挂载到容器里,如果想要更细致的权限划分,请将权限配置至少给予 image-manage级别的权限。
  4. 创建的k8s用户文件请将命名为admin.conf,因为应用里指定了k8s配置文件为admin.conf,其他名称会无法读取。
  1. 访问

我们可以直接在k8s中部署nginx,反代 image-manage cluster ip,进行访问,

3. 运行web ui

cd font-userui
npm i
npm run dev

后面需要把public里的base url改成接口地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492591.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ELF 1技术贴|开发板网口功能讲解

在当前的嵌入式系统设计趋势中,MAC功能普遍被整合至CPU内核,形成一种高度集成的网络功能模块。与此同时,PHY芯片作为独立器件,专注于应对物理层错综复杂的电气特性和信号转换需求。为了确保PHY芯片能够在所需的各种网络模式和参数…

一周学会Django5 Python Web开发-Django5文件上传实现

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计26条视频,包括:2024版 Django5 Python we…

邀请函 | 2024年数据技术嘉年华集结号已吹响,期待您参会!

龙腾四海内,风云际会时,2024年中国数据嘉年华如约而至。从起初小范围的网友聚会,到如今面向全国各地从业者、爱好者的年度集会,纵使岁月更迭,我们初心依旧。我们在各自最好的年华里共同见证了中国数据库行业的蓬勃发展…

NLP 使用Word2vec实现文本分类

🍨 本文为[🔗365天深度学习训练营学习记录博客 🍦 参考文章:365天深度学习训练营 🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.com/…

浅谈门级驱动电压对IGBT性能的影响

绝缘门极双极型晶体管(IGBT)是复合了功率场效应管和电力晶体管的优点而产生的一种新型复合器件,具有输入阻抗高、工作速度快、热稳定性好、驱动电路简单、饱和压降低、耐压高电流大等优点,因此现今应用相当广泛。但是IGBT良好特性…

TypeScrip遍历对象报错问题

解决TypeScrip遍历对象报错问题 文章目录 解决TypeScrip遍历对象报错问题声明接口,遍历对象报错解决方式keyof给对象声明一个接口泛型as anyas any 声明接口,遍历对象报错 interface DEPT {name: string;age: number,[key: string]: any }解决方式 // 用…

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…

邮件营销神器Focussend,轻松实现1美元转化72美元的营销高回报!

随着社交媒体营销逐渐成为主流,一家名为Focussend的公司却在邮件营销领域崭露头角。成立于2009年,Focussend经过尝试综合营销后,选择进入古早但高回报的邮件营销市场。目前,该公司在跨境平台中排名靠前,服务着上万名中…

项目管理基本要素--项目、项目集、项目组合

本文描述从事项目管理和了解项目管理领域所需的基本要素,词汇定义来自于《项目知识管理体系》(PMBOK指南)第六版,仅作个人学习使用,任何对此文章的引用,应当说明源出处,不得用于商业用途。 如有侵权、联系速删 文章目录…

Linux Debian12安装fcitx5中文拼音输入法

我使用Debian系统已经4年了,我常在Debian系统上安装ibus google拼音输入法,但是有时这个输入法会卡死,停上几分钟后又恢复正常了,经常被这个困扰。不过在Debian 11或Debian12中我们可以使用fcitx5中文拼音输入法了&am…

用c# 自己封装的Modbus工具类库源码

前言 Modbus通讯协议在工控行业的应用是很多的,并且也是上位机开发的基本技能之一。相关的类库也很多也很好用。以前只负责用,对其并没有深入学习和了解。前段时间有点空就在这块挖了挖。想做到知其然还要知其所以然。所以就有了自己封装的Modbus工具类库…

linux僵尸进程

僵尸进程(Zombie Process)是指在一个进程终止时,其父进程尚未调用wait()或waitpid()函数来获取该进程的终止状态信息,导致进程的资源(如进程表中的记录)仍然保留在系统中的一种状态。 当一个进程结束时&am…