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

news2024/12/22 18:34:28

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.254
  nfsPath: /volume1/nfs

---
# configMap k8s权限配置到英雄
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: image-manage
  name: k8s-role-config
data:
  key1: ./admin.config

---

# 应用
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: image-manage
  name: image-manage
spec:
  serviceName: "image-manage-headless-service"
  replicas: 2
  selector:
    matchLabels:
      app: image-manage
  template:
    metadata:
      labels:
        app: image-manage
    spec:
      containers:
      - name: image-manage
        image: wnzzer/image-manage:latest
        ports: 
        - containerPort: 8080
        env:
        - name: SPRING_PROFILES_ACTIVE
          value: "prod"
        - name: CONFIG_ISCLUSTERMODEENABLED
          value: "false"
        - name: SPRING_DATASOURCE_URL
          value: "jdbc:mysql://192.168.0.254:3306/image_manage?userUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"
        - name: SPRING_DATASOURCE_USERNAME
          value: "root"
        - name: SPRING_DATASOURCE_PASSWORD
          value: "123456"
        - name: SPRING_REDIS_HOST
          value: "192.168.0.254"
        - name: SPRING_REDIS_PASSWORD
          value: "123456"
        volumeMounts:
        - name: local-vol
          mountPath: "/app"
        - name: config-volume  # 挂载ConfigMap作为卷
          mountPath: "/etc/image-manage/config"  # 指定挂载ConfigMap的路径
      volumes:
      - name: config-volume  # 定义卷使用的ConfigMap
        configMap:
          name: k8s-admin-role-config  # 指定ConfigMap的名称
  volumeClaimTemplates:
  - metadata:
      name: local-vol
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "nfs-store-class"
      resources:
        requests:
          storage: 1Gi

---
# 无头服务,用于应用的同步通信
apiVersion: v1
kind: Service
metadata:
  name: image-manage-headless-service
  namespace: image-manage
spec:
  clusterIP: None
  selector:
    app: image-manage
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080


---
# cluster service 用于输出api
apiVersion: v1
kind: Service
metadata:
  name: image-manage-cluster-service
  namespace: image-manage
spec:
  type: ClusterIP
  ports:
  - port: 8080
    targetPort: 8080
  selector:
    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.coloradmin.cn/o/1472826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言函数递归

一、什么是递归 递归实际上就是函数自己调用自己。 递归在书写的时候,有2个必要条件: • 递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。 • 每次递归调用之后越来越接近这个限制条件。 在下面的例子中&#xff0…

WPF 附加属性+控件模板,完成自定义控件。建议观看HandyControl源码

文章目录 相关连接前言需要实现的效果附加属性添加附加属性,以Test修改FontSize为例依赖属性使用触发器使用直接操控 结论 控件模板,在HandyControl的基础上面进行修改参考HandyControl的源码控件模板原型控件模板 结论 相关连接 WPF控件模板(6) WPF 附加…

Android之UI Automator框架源码分析(第九篇:UiDevice获取UiAutomation对象的过程分析)

前言 通过UiDevice的构造方法,UiDevice对象持有的几个对象一部分是在构造方法中创建的(初始化),它持有的每个对象都是分析的重点 备注:当前对象持有的对象,它的位置一般在实例变量创建时或者构造方法中&…

ChatGPT国内快速上手指南

ChatGPT简介 ChatGPT是由OpenAI团队研发的自然语言处理模型,该模型在大量的互联网文本数据上进行了预训练,使其具备了深刻的语言理解和生成能力。 GPT拥有上亿个参数,这使得ChatGPT在处理各种语言任务时表现卓越。它的训练使得模型能够理解上…

044-WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式

044-WEB攻防-PHP应用&SQL盲注&布尔回显&延时判断&报错处理&增删改查方式 #知识点: 1、PHP-MYSQL-SQL注入-方式增删改查 2、PHP-MYSQL-SQL注入-布尔&延迟&报错 3、PHP-MYSQL-SQL注入-数据回显&报错处理 演示案例: ➢PHP…

不懂且不会用循环OB块的plc工程师不是优秀的plc工程师

本章介绍了循环中断OB的功能、与循环中断OB相关的指令、执行过程以及举例说明的内容。 循环中断 OB ● 循环中断 OB 的功能 循环中断 OB 在经过一段固定的时间间隔后执行相应的中断 OB 中的程序。 S7-1500 最多支持 20 个循环中断 OB ,在创建循环中断 OB 时设定…

✅技术社区项目—JWT身份验证

通用的JWT鉴权方案 JWT鉴权流程 基本流程分三步: ● 用户登录成功之后,后端将生成的jwt返回给前端,然后前端将其保存在本地缓存; ● 之后前端与后端的交互时,都将iwt放在请求头中,比如可以将其放在Http的身份认证的请求头 Author…

Mysql 高可用解决方案

1.环境说明 操作系统:centos7.7 主服务器:node2(192.168.1.102) 从服务器:node3(192.168.1.103) keepalived中虚拟ip(VIP):192.168.1.100 2.准备事项 主库和从库数据库的版本一致把主库的数据同步给从库一份 3.主库配置 3.1 编辑MySQL配…

【踩坑】修复报错 you should not try to import numpy from its source directory

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 报错如下: 修复方法一: pip install pyinstaller5.9 修复方法二: pip install numpy1.24.1

ActiveMq PUT任意文件上传漏洞(CVE-2016-3088)漏洞复现

ActiveMQ ActiveMQ Web控制台分为三个应用程序:其中admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是用于存储文件的界面;admin和api需要先登录才能使用,fileserver不需要…

Three.js 基础属性

三维坐标系 辅助观察坐标系 THREE.AxesHelper()的参数表示坐标系坐标轴线段尺寸大小,你可以根据需要改变尺寸。 // AxesHelper:辅助观察的坐标系 const axesHelper new THREE.AxesHelper(150); scene.add(axesHelper);材质半透明设置 设置材质半透明…

【行业会议】优积科技应邀参加住建部模块建筑企业2023年工作座谈会

2023年3月2日,优积建筑科技发展(上海)有限公司(以下简称“优积科技”)应邀参加由住房和城乡建设部科技与产业化发展中心(以下简称“住建部科技与产业化中心”)组织召开的模块建筑企业2023年工作…

022 基于Spring Boot的校园二手交易平台(源码+数据库+10000字论文)

部分代码地址: https://github.com/XinChennn/xc022-Used-Trading-Platform2 基于Spring Boot的校园二手交易平台(源码数据库10000字论文) 一、系统介绍 基于Spring Boot的校园二手交易网站,方便学生处理自己的旧物&#xff0c…

【域适应论文汇总】未完结

文章目录 DANN:Unsupervised Domain Adaptation by Backpropagation (2015)TADA:Transferable Attention for Domain Adaptation(2019 AAAI)1 局部注意力迁移:Transferable Local Attention2 全局注意力迁移&#xff1…

阿里云2核4G5M服务器199元一年性能测评

阿里云服务器ECS u1实例,2核4G,5M固定带宽,80G ESSD Entry盘优惠价格199元一年,性能很不错,CPU采用Intel Xeon Platinum可扩展处理器,购买限制条件为企业客户专享,实名认证信息是企业用户即可&a…

2024年开学季推荐:数码装备购物清单,校园生活必备神器

随着开学的钟声即将敲响,全新的学年画卷正在缓缓展开。它不仅承载着我们对知识的渴望和对未来的憧憬,更是我们挥洒青春、展示才华的舞台。在这个充满无限可能的新起点,每一位学子都怀着期待,准备踏上成长的征程。然而为了更好地适…

Linux忘记mysql密码

Linux忘记mysql密码 我们在linux操作系统上,输入密码 出现这样的错误 解决 1.首先我们需要修改/etc/my.cnf vim /etc/my.cnf2.我们需要再文件的最后一行添加 skip-grant-tables跳过权限表 3.我们保存文件,之后重启mysql service mysqld restart4.…

阿里云ECS u1实例2核4G5M固定带宽80G ESSD Entry盘性能测评

阿里云服务器ECS u1实例,2核4G,5M固定带宽,80G ESSD Entry盘优惠价格199元一年,性能很不错,CPU采用Intel Xeon Platinum可扩展处理器,购买限制条件为企业客户专享,实名认证信息是企业用户即可&a…

暂时的停更

最近因学业紧张,暂时停更,但还是会上线 我的专栏:C教程 感谢大家的支持

浅谈 目录项(dentry) 、 inode 、硬链接

文章目录 名词解释inode 介绍dentry 介绍硬链接 介绍 名词解释 inode:索引节点,是一个结构体,存储文件的属性等信息。 dentry:目录项,是一个 dir_entry 结构体,重要成员有文件的 inode 索引号,…