MinIO分布式存储k8s集群部署

一、MinIO是什么

MinIO是go开发的,高性能分布式存储;基于GNU AGPL v3开源,可免费使用;
官网:https://min.io/
github: https://github.com/minio/minio
在这里插入图片描述
官网宣传MinIO是世界上速度最快的分布式对象存储;

二、安装

2.1 单机单磁盘

安装非常简单,可参考官网:https://min.io/docs/minio/container/index.html

docker run -p 9000:9000 -p 9090:9090 \
-v F:/minIO:/data \
-e "MINIO_ROOT_USER=ROOTUSER" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
 minio/minio server /data --console-address ":9090"

./minio server /data --console-address :9090
/data为挂载目录
--console-address :9090 设置控制面板端口,不设置会变为随机端口;

启动后,访问看板:http://127.0.0.1:9090/,输入设置的用户名密码,这样一个单节点MinIO就搭建好了;
在这里插入图片描述

单节点模式仅用于测试,因有单节点故障

2.2 集群搭建

MinIO是云原生应用,最适合在k8s内部搭建集群,Linux下集群搭建可参考官网,这里简单记录下,因MinIO迭代较快,具体还需要参考官网:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html

export MINIO_ROOT_USER=ROOTUSER
export MINIO_ROOT_PASSWORD=CHANGEME123
nohup /opt/server/minio/minio server --console-address ":9090" \
http://172.16.10.226:9000/minio-data \
http://172.16.10.227:9000/minio-data \
http://172.16.10.228:9000/minio-data \
http://172.16.10.229:9000/minio-data \
> /data/logs/minio/minio.out 2>&1 &

因为分布式存储需要冗余存储,MinIO需要一半节点存切片后的数据,一半节点存储奇偶校验块,因此集群至少需要4个节点

集群搭建完毕后,每个节点都可以进行操作,需要在前端搭建nginx进行负载均衡;

2.2.2 k8s内部部署

官网上也提供了一个单例配置方法,但该方法仅能用于测试不能用于生产;

  • 单节点模式yml:
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: minio
  name: minio
  namespace: minio-dev # Change this value to match the namespace metadata.name
spec:
  replicas: 1
  selector:
    matchLabels:
      app: minio
  template:
    metadata:
      labels:
        app: minio
    spec:
     containers:
     - name: minio
       image: quay.io/minio/minio:latest
       command:
       - /bin/bash
       - -c
       args:
       - minio server /data --console-address :9090
       volumeMounts:
       - mountPath: /data
         name: localvolume # Corresponds to the `spec.volumes` Persistent Volume
     nodeSelector:
       minio: "true" # Specify a node label associated to the Worker Node on which you want to deploy the pod.
     hostNetwork: true
     volumes:
     - name: localvolume
       hostPath: # MinIO generally recommends using locally-attached volumes
         path: /mnt/disk1/data # Specify a path to a local drive or volume on the Kubernetes worker node
         type: DirectoryOrCreate # The path to the last directory must exist

注意修改nodeSelector,访问方式这里使用hostNetwork,可根据情况自行调整,这里仅做测试;
该yml会把选择node的本地磁盘路径/mnt/disk1/data映射入minIO;

创建pod成功后,访问节点IP:9090即可打开控制台,进行上传下载等操作;IP:9000为API接口;

  • 多节点配置模式
    MinIO官方为了方便用户部署,专门写了一个 MinIO Operator, 用来部署集群,架构如下:
    在这里插入图片描述
    MinIO Operator分为两部分:Console Pod 和 Operator Pod, 一个是负责显示控制台,一个负责执行部署;
    为了安装MinIO Operator,官方专门写了一个插件kubectl-minio,官方真的我哭死;为了安装这个插件需要安装k8s插件管理器krew;……,因众所周知的原因,凡是这种包管理器都需要源,一般网都不通;只能直接下载安装;
    整个安装步骤:
    1. 安装kubectl-minio
    2. 通过kubectl-minio安装MinIO Operator
    3. 通过MinIO Operator安装MinIO集群;
1. 安装kubectl-minio
curl https://github.com/minio/operator/releases/download/v5.0.7/kubectl-minio_5.0.7_linux_amd64 -o kubectl-minio
chmod +x kubectl-minio
mv kubectl-minio /usr/local/bin/

这里使用的5.07,请根据自己k8s版本自行下载安装,https://github.com/minio/operator/releases
4.0.0+对应k8s版本>=1.19.0;
5.0.0+对应k8s>=1.21.0;
5.0.6+对应k8s>=1.25.0

安装完成后,查看版本

kubectl minio version #查看版本
2. 安装MinIO Operator

运行以下命令进行安装,该命令会自动创建名为minio-operator的namespace;并在该命名空间创建Console PodOperator Pod

kubectl minio init

等待pod创建成功
在这里插入图片描述
修改service/console为NodePort或者配置ingress路由,让console可以集群外访问;当然也可以按照官方文档上的,进行端口代理;

kubectl minio proxy

运行后,即可通过当前节点ip:9090进行访问,jwt token控制台也打出来了,

这种方式我并没有登录成功,可能这种代理只能通过localhost:9090访问,没有深入研究,我是通过ingress暴露地址,拿token进行访问的;

在这里插入图片描述
另外一个获取token的命令:

kubectl get secret/console-sa-secret -n minio-operator -o json | jq -r '.data.token' | base64 -d

在这里插入图片描述
登录后,我这里已经创建好了一个集群或者说租户suozq;
在这里插入图片描述

3. 创建MinIO集群

创建集群就非常简单了,在控制台配置创建即可
在这里插入图片描述
以上就是所有的必填项,其他配置,可以大概看下,不想看的点击创建也可;
下方可以通过Images配置MinIO的镜像版本

填写完成点击create;
等待创建完成
在这里插入图片描述
创建的服务中,minio对外提供API服务,suozq-console提供控制台服务;
查看nodeport端口
在这里插入图片描述
打开控制台:https://192.168.10.100:30822/
在这里插入图片描述
Operator控制台中修改密码, 注意:密码需要至少8位数,如果不是会导致pod重启失败
在这里插入图片描述

等待pod重启完毕后,使用账号密码登录即可;
在这里插入图片描述

bucket 可以理解为文件夹

API访问,集群外部通过nodeport或者ingress,集群内部同一命名空间通过minio进行访问,集群内部不同命名空间通过:https://minio.minio-dev.svc.cluster.local访问
即:{SERVICE_NAME}.{NAMESPACE_NAME}.svc.cluster.local 跨命名空间访问服务方式;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】顺序表详解

当我们写完通讯录后,顺序表肯定难不倒你,跟着小张一起来学习顺序表吧! 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表&#x…

【SpringCloud】SpringCloud整合openFeign

文章目录 前言1. 问题分析2. 了解Feign3. 项目整合Feign3.1 引入依赖3.2 添加注解3.3 编写Feign客户端3.4 测试3.5 总结 4. 自定义配置4.1 配置文件方式4.2 Java代码方式 5. Feign使用优化5.1 引入依赖5.2 配置连接池 6. Feign最佳实践6.1 继承方式6.2 抽取方式 前言 微服务远…

OpenCV

文章目录 OpenCV学习报告读取图片和网络摄像头1.1 图片读取1.2 视频读取1.1.1 读取视频文件1.1.2读取网络摄像头 OpenCV基础功能调整、裁剪图像3.1 调整图像大小3.2 裁剪图像 图像上绘制形状和文本4.1 图像上绘制形状4.2图像上写文字 透视变换图像拼接颜色检测轮廓检测人脸检测…

Spring Boot集成MyBatis Plus

文章目录 一、前言二、步骤2.1、步骤 1:创建 Spring Boot 项目2.2、添加依赖2.2.1、基本的Spring和Spring MVC功能2.2.2、MySQL驱动依赖2.2.3、 MyBatis Plus 的依赖 2.3、配置数据库连接2.4、创建实体类2.5、创建 Mapper 接口2.6、编写 Service 层2.7、编写 Contro…

ubuntu20.04+ROS noetic在线运行单USB双目ORB_SLAM

双目摄像头主要有以下几种,各有优缺点。 1.单USB插口,左右图像单独输出2.双USB插口,左右图像单独输出(可能存在同步性问题)3.双USB插口,左右图像合成输出4.单USB插口,左右图像合成输出 官方版…

XSS漏洞及分析

目录 1.什么是xss漏洞 1)存储型XSS漏洞 2)反射型XSS漏洞 3)DOM型XSS漏洞 2.什么是domcobble破环 3.案例一 1)例题链接 2)代码展示 3)例题分析 4.案例二 1)例题链接 2)代…

Java-泛型

文章目录 Java泛型什么是泛型?在哪里使用泛型?设计出泛型的好处是什么?动手设计一个泛型泛型的限定符泛型擦除泛型的通配符 结论 Java泛型 什么是泛型? Java泛型是一种编程技术,它允许在编译期间指定使用的数据类型。…

重磅OpenAI发布ChatGPT企业版本

8月29日凌晨,Open AI官网发布ChatGPT企业版本! 企业版简介: ChatGPT企业版提供企业级安全和隐私、无限的高速 GPT-4 访问、用于处理更长输入的更长上下文窗口、高级数据分析功能、自定义选项等等。人工智能可以协助和提升我们工作生活的各个…

魏副业而战:他全职网络创业了

我是魏哥,与其躺平,不如魏副业而战! 社群小X今年全职创业,加入社群一个月,就直接做了徒弟,并且进入合伙人的团队。 玩社群,就要做核心。 小X不到两个月就做到了。 看来他蛮有悟性的。 吃过…

Redis的数据结构与单线程架构

"飞吧,去寻觅红色的流星" Redis中的五种数据结构和编码 Redis是一种通过键值对关系存储数据的软件,在前一篇中,我们可以使用type命令实际返回当前键所对应的数据结构类型,例如: String\list\hash\set等等。 但…

R语言入门——line和lines的区别

目录 0 引言一、 line()二、 lines() 0 引言 首先,从直观上看,lines比line多了一个s,但它们还是有很大的区别的,下面将具体解释这个两个函数的区别。 一、 line() 从R语言的帮助文档中找到,line()的使用&#xff0c…

学习笔记230827--vue项目中,子组件拿不到父组件异步获取数据的问题

🧋 问题描述 父组件的数据是请求后台所得,因为是异步数据,就会出现,父组件的值传递过去了,子组件加载不到,拿不到值的问题。 下面从同步数据传递和异步数据传递开始论述问题 🧋🧋1…

【逻辑回归-银行客户】

逻辑回归:从理论到实践 在本文中,我们将介绍一种被广泛用于二分类问题的机器学习模型——逻辑回归。我们将通过一个实例,深入解析如何在 Python 环境中实现逻辑回归。 源数据下载链接 1. 什么是逻辑回归? 逻辑回归是一种用于解…

华为 连接OSPF和RIP网络---OSPF和RIP网络相互引入

路由引入简介 不同路由协议之间不能直接共享各自的路由信息,需要依靠配置路由的引入来实现。 获得路由信息一般有3种途径:直连网段、静态配置和路由协议。可以将通过这3种途径获得的路由信息引入到路由协议中,例如,把直连网段引入…

【python爬虫】9.带着小饼干登录(cookies)

文章目录 前言项目:发表博客评论post请求 cookies及其用法session及其用法存储cookies读取cookies复习 前言 第1-8关我们学习的是爬虫最为基础的知识,从第9关开始,我们正式打开爬虫的进阶之门,学习爬虫更多的精进知识。 在前面几…

Databricks 入门之sql(二)常用函数

1.类型转换函数 使用CAST函数转换数据类型(可以起别名) SELECTrating,CAST(timeRecorded as timestamp) FROMmovieRatings; 支持的数据类型有: BIGINT、BINARY、BOOLEAN、DATE 、DECIMAL(p,s)、 DOUBLE、 FLOAT、 INT、 INTERVAL interva…

Linux服务器部署JavaWeb后端项目

适用于:MVVM前后台分离开发、部署、域名配置 前端:Vue 后端:Spring Boot 这篇文章只讲后端部署,前端部署戳这里 目录 Step1:服务器上搭建后端所需环境1、更新服务器软件包2、安装JDK83、安装MySQL4、登录MySQL5、修…

Hadoop Yarn 核心调优参数

文章目录 测试集群环境说明Yarn 核心配置参数1. 调度器选择2. ResourceManager 调度器处理线程数量设置3. 是否启用节点功能的自动检测设置4. 是否将逻辑处理器当作物理核心处理器5. 设置物理核心到虚拟核心的转换乘数6. 设置 NodeManager 使用的内存量7. 设置 NodeManager 节点…

「操作系统」1. 基础

前言:操作系统基础八股文 文章目录 一 、操作系统基础1.1 什么是操作系统?1.2 什么是系统调用1.3 什么是中断 🚀 作者简介:作为某云服务提供商的后端开发人员,我将在这里与大家简要分享一些实用的开发小技巧。在我的职…

Matlab(画图进阶)

目录 大纲 1.特殊的Plots 1.1 loglog(双对数刻度图) ​1.3 plotyy(创建具有两个y轴的图形) 1.4yyaxis(创建具有两个y轴的图) 1.5 bar 3D条形图(bar3) 1.6 pie(饼图) 3D饼图 1.7 polar 2.Stairs And Ste阶梯图 3.Boxplot 箱型图和Error Bar误差条形图 3.1 boxplot 3.2 …