当前位置: 首页 > news >正文

k8s-部署对象存储minio

环境信息

minio版本 :最新

k8s 版本1.22

使用nfs作为共享存储

一.单节点安装包部署

脚本部署,一键部署,单节点应用于数据量小,一些缓存存储,比如gitlab-runner的产物数据,maven的打包依赖数据

#!/bin/bash# 步骤一:创建目录
sudo mkdir -p /opt/minio/{bin,conf,data}# 步骤二:下载服务
cd /opt/minio/bin
sudo wget https://dl.min.io/server/minio/release/linux-amd64/minio
sudo chmod +x minio# 步骤三:创建配置文件
sudo tee /opt/minio/conf/minio.conf > /dev/null <<EOF
MINIO_VOLUMES="/opt/minio/data"
#--address指定S3 API端口,--console-address指定web控制台端口.
MINIO_OPTS="--address :39000 --console-address :39001" 
# Root user for the server.
MINIO_ROOT_USER=admin
# Root secret for the server.
MINIO_ROOT_PASSWORD=minio123
EOF# 步骤四:创建启动命令
sudo tee /etc/systemd/system/minio.service > /dev/null <<EOF
[Unit]
Description=MinIO
Documentation=https://www.minio.org.cn/
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/opt/minio/bin/minio[Service]
User=root
Group=rootEnvironmentFile=/opt/minio/conf/minio.conf
ExecStart=/opt/minio/bin/minio server \$MINIO_OPTS \$MINIO_VOLUMES
Restart=alwaysLimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no[Install]
WantedBy=multi-user.target
EOF# 步骤五:启动服务
sudo systemctl daemon-reload
sudo systemctl enable minio.service
sudo systemctl start minio.service
sudo systemctl status minio.service

二.单节点k8s部署

1.minio-deploy.yaml部署

apiVersion: apps/v1
kind: Deployment
metadata:name: minio
spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioenv:- name: MINIO_ROOT_USERvalue:  'root'- name: MINIO_ROOT_PASSWORDvalue:  'root123456'        image: minio/minio:latestimagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- minio server /data --console-address ":5000"ports:- name: datacontainerPort: 9000protocol: "TCP"- name: consolecontainerPort: 5000protocol: "TCP"volumeMounts:- name: minio-persistent-datamountPath: /datavolumes:- name: minio-persistent-datanfs:server: 192.168.110.190 path: /data/data/minio

执行资源文件

kubectl -f apply  minio-deploy.yaml -n minio

2.minio-service.yaml 创建

apiVersion: v1
kind: Service
metadata:name: minio
spec:type: NodePortports:- name: dataport: 9000targetPort: 9000protocol: TCPnodePort: 30069- name: consoleport: 5000targetPort: 5000protocol: TCPnodePort: 30070selector:app: minio

执行资源文件

kubectl -f apply  minio-service.yaml -n minio

安装好后浏览器访问ui,登录密码root和root123456

http://集群内部任意ip:30070 

三.k8s集群部署

1.创建挂载多磁盘目录

mkdir -p /data/data/minio/pv{1..4}

2.创建sc.yaml

cat > sc.yaml << 'EOF'
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: minio-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
EOF

3.创建pv.yaml

cat > pv.yaml << 'EOF'
apiVersion: v1
kind: PersistentVolume
metadata:name: minio-nfs-pv-1
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: minio-storagenfs:server: 192.168.110.190path: /data/data/minio/pv1
---
apiVersion: v1
kind: PersistentVolume
metadata:name: minio-nfs-pv-2
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: minio-storagenfs:server: 192.168.110.190path: /data/data/minio/pv2
---
apiVersion: v1
kind: PersistentVolume
metadata:name: minio-nfs-pv-3
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: minio-storagenfs:server: 192.168.110.190path: /data/data/minio/pv3
---
apiVersion: v1
kind: PersistentVolume
metadata:name: minio-nfs-pv-4
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: minio-storagenfs:server: 192.168.110.190path: /data/data/minio/pv4
EOF

4.创建 SVC

cat > svc.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:name: minio-hsnamespace: gitlablabels:app: minio
spec:clusterIP: Noneports:- port: 9000name: data- port: 5000name: consoleselector:app: minio
---
apiVersion: v1
kind: Service
metadata:name: minio-scnamespace: gitlablabels:app: minio
spec:type: NodePortports:- name: dataport: 9000targetPort: 9000protocol: TCPnodePort: 30090- name: consoleport: 5000targetPort: 5000protocol: TCPnodePort: 30050selector:app: minio
EOF

5.创建 STS

cat > sts.yaml << 'EOF'
apiVersion: apps/v1
kind: StatefulSet
metadata:name: minionamespace: gitlab
spec:serviceName: "minio-hs"replicas: 4selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioenv:- name: MINIO_ROOT_USERvalue: "admin"- name: MINIO_ROOT_PASSWORDvalue: "admin12345"image: minio/minio:RELEASE.2023-08-09T23-30-22ZimagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- minio server --console-address ":5000" http://minio-{0...3}.minio-hs.minio.svc.cluster.local/dataports:- name: datacontainerPort: 9000protocol: "TCP"- name: consolecontainerPort: 5000protocol: "TCP"volumeMounts:- name: datamountPath: /datavolumeClaimTemplates:- metadata:name: dataspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 10GistorageClassName: "minio-storage"
EOF

6.卸载服务

kubectl delete pod minio-mc -n gitlab

kubectl delete -f sts.yaml
kubectl get pod -n gitlab -o wide

kubectl delete -f svc.yaml
kubectl get svc -n gitlab

kubectl delete namespace minio
kubectl get namespace

kubectl get pvc -n gitlab
kubectl delete pvc -n migitlabnio --all

kubectl delete -f pv.yaml -n gitlab
kubectl get pv

kubectl delete -f sc.yaml -n gitlab
kubectl get sc

rm -rf /data/data/minio
mkdir -p /data/data/minio/pv{1..4}
tree /data/data/minio

四.注意事项

分部署部署时,注意使用的minio镜像,我是试了好多版本,才可以的,因为大多数存在minio-dns访问问题,各个几点之间通信异常 

相关文章:

k8s-部署对象存储minio

环境信息 minio版本 :最新 k8s 版本1.22 使用nfs作为共享存储 一.单节点安装包部署 脚本部署&#xff0c;一键部署&#xff0c;单节点应用于数据量小&#xff0c;一些缓存存储&#xff0c;比如gitlab-runner的产物数据&#xff0c;maven的打包依赖数据 #!/bin/bash# 步骤…...

go常用命令

创建一个module(逻辑概念) #The go mod init command initializes and writes a new go.mod file in the current directory, in effect creating #a new module rooted at the current directory. #specify a module path that serves as the module’s name. go mod initclon…...

【中年危机】程序猿自救指南

中年危机&#xff0c;一个听起来就充满挑战的词汇&#xff0c;它不仅仅是一个年龄的标记&#xff0c;更是一个个人成长和职业发展的转折点。 构架个人品牌&#xff1a; 学会打造IP个人品牌是职业生涯中的重要资产。在中年时期&#xff0c;你已经积累了丰富的经验和知识&#x…...

vueRouter路由总结

https://blog.csdn.net/qq_24767091/article/details/119326884...

算法工程师需要学习C++的哪些知识?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;以下是算法工程师需要学习的一些…...

CTF网络安全大赛简单的web抓包题目:HEADache

题目来源于&#xff1a;bugku 题目难度&#xff1a;简单 题目 描  述: > Wanna learn about some types of headache? > Lets dig right into it! 下面是题目源代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"&…...

Qt Creator创建Python界面工程并打包为可执行exe文件

Qt Creator创建Python界面工程并打包为可执行exe文件_qtcreator创建python工程-CSDN博客...

基于单片机的步进电机控制系统的研究

摘要: 步进电机控制作为一种电机控制系统的重要模式,属于现代数字化控制的重要手段,其应用已经相当广泛。步进电机属于感应电机类,利用电子电路将直流电分为分时供电、多相时序供电控制电流,利用这种电流为电机供电,驱使电机工作。步进电机不能够在常规模式下使用,必须通过双环…...

BioPorto胰高血糖素样肽-1抗体(GLP-1)

丹麦BioPorto Diadnostics公司致力于提供世界领先的GLP-1抗体。基于结合GLP-1位点的不同&#xff0c;他们筛选出了不同的抗GLP-1抗体。有的抗体可以同时结合GLP-1的活性形式和非活性形式&#xff0c;有的专门结合生物活性形式的GLP-1。在开发和检测GLP-1相关治疗的过程中&#…...

Go 语言字符串及 strings 和 strconv 包

在 Go 语言编程中&#xff0c;字符串是最基本、最常用的数据类型之一。无论是处理用户输入、读取文件内容&#xff0c;还是生成输出&#xff0c;字符串操作无处不在。为了方便开发者对字符串进行各种操作&#xff0c;Go 语言提供了强大的 strings 包和 strconv 包。strings 包包…...

政府窗口服务第三方评估报告如何写

撰写政府窗口服务第三方评估报告需要结构清晰、内容详实&#xff0c;并包含对评估过程和结果的详细描述以及改进建议。以下是第三方评估机构民安智库&#xff08;第三方社会评估调研公司&#xff09;给出的一个政府窗口服务第三方评估报告简单的示例&#xff1a; 一、封面 报…...

若依前后端分离Spring Security新增手机号登录

备忘贴 转自&#xff1a;【若依RuoYi短信验证码登录】汇总_数据库_z_xiao_qiang-RuoYi 若依 配置Security: 按照Security的流程图可知&#xff0c;实现多种方式登录&#xff0c;只需要重写三个主要的组件&#xff0c;第一个用户认证处理过滤器&#xff0c;第二个用户认证tok…...

Oracle操作扩可变字符长度交易影响分析-较小

使用AI帮助学习知识 以下知识来至AI oracle 一张大表&#xff0c;对可变字符串长度从10扩到20位&#xff0c;oracle底层存储是否会发生变化&#xff0c;先锁表&#xff0c;更新表字典信息&#xff0c;然后会不会重新整理表&#xff0c;在有交易的情况下导致大量交易失效&#…...

全栈工程师需要具备哪些技能?

概论&#xff1a; 全栈工程师是一位能够从头到尾构建 Web 应用程序的工程师&#xff0c;能独立完成产品。技术包括前端部分、后端部分和应用程序所在的基础架构。他们在整个技术栈中工作&#xff0c;并了解其中的每个部分。从需求分析开始&#xff0c;到概要设计&#xff0c;详…...

用java实现客服聊天+网络爬虫下载音乐(java网络编程,io,多线程)

一 灵感&#xff1a; 在2022年的暑假&#xff0c;也就是我即将迈进高三的那个暑假&#xff0c;我并没有察觉自己应该要学习了&#xff0c;还是和过往的暑假一样玩着王者荣耀&#xff0c;凌晨2点睡觉&#xff0c;中午12点起床。我依稀记得这种状态一直持续到8月19。然而离开学还…...

基于springboot+vue的医院信息管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

乡村振兴与农业科技创新:加大农业科技研发投入,推动农业科技创新,促进农业现代化和美丽乡村建设

一、引言 在当代中国&#xff0c;乡村振兴已成为国家发展的重要战略之一。作为国民经济的基础&#xff0c;农业的发展直接关系到国家的稳定和人民的福祉。随着科技的不断进步&#xff0c;农业科技创新在推动农业现代化和美丽乡村建设中发挥着越来越重要的作用。本文旨在探讨如…...

Java 雪花算法:分布式唯一ID生成的魔法秘籍

欢迎来到本次博客的旅程&#xff0c;今天我们要揭开一个神秘算法的面纱&#xff0c;它就是在分布式系统中广受欢迎的——雪花算法&#xff08;Snowflake&#xff09;。这个算法不是用来预测雪花的形状&#xff0c;而是用来生成唯一的ID&#xff0c;保证在分布式系统中&#xff…...

mybatis配置环境流程

mybatis配置环境流程 为啥要用mybatis&#xff1a;通过Mybatis实现快速访问后端pgsql、mysql等数据库。 1.修改pom.xml&#xff0c;添加mybatis相关依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-s…...

UE5增强输入系统入门

UE4直接在项目设置里设置的轴映射和操作映射在UE5中被标记为废弃&#xff0c;改为使用增强输入系统。 这两天学习了下蓝图和c中增强输入系统的使用&#xff0c;在这里分享一下。 学习使用的模板是第三人称模板(蓝图/c)&#xff0c;代码蓝图都参考的模板。 增强输入系统 UE5…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...

Linux中INADDR_ANY详解

在Linux网络编程中&#xff0c;INADDR_ANY 是一个特殊的IPv4地址常量&#xff08;定义在 <netinet/in.h> 头文件中&#xff09;&#xff0c;用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法&#xff0c;允许套接字监听所有本地IP地址上的连接请求。 关…...

【threejs】每天一个小案例讲解:创建基本的3D场景

代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone&#xff0c;无需安装依赖&#xff0c;直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心三要素 场景&#xff08;Scene&#xff09; 使用 THREE.Scene(…...

解密鸿蒙系统的隐私护城河:从权限动态管控到生物数据加密的全链路防护

摘要 本文以健康管理应用为例&#xff0c;展示鸿蒙系统如何通过细粒度权限控制、动态权限授予、数据隔离和加密存储四大核心机制&#xff0c;实现复杂场景下的用户隐私保护。我们将通过完整的权限请求流程和敏感数据处理代码&#xff0c;演示鸿蒙系统如何平衡功能需求与隐私安…...

Android多媒体——音/视频数据播放(十八)

在媒体数据完成解码并准备好之后,播放流程便进入了最终的呈现阶段。为了确保音视频内容能够顺利输出,系统需要首先对相应的播放设备进行初始化。只有在设备初始化成功后,才能真正开始音视频的同步渲染与播放。这一过程不仅影响播放的启动速度,也直接关系到播放的稳定性和用…...

数据库管理与高可用-MySQL故障排查与生产环境优化

目录 #1.1MySQL单案例故障排查 1.1.1MySQL常见的故障排查 1.1.2MySQL主从故障排查 #2.1MySQL优化 2.1.1硬件方面的优化 2.1.2进程方面的优化 #3.1MySQL存储引擎 3.1.1 MyISAM存储引擎 3.1.2 InnoDB存储引擎 1.1MySQL单案例故障排查 1.1.1MySQL常见的故障排查 &#xff08;1&…...