1.背景介绍
- 我们在做项目的时候,有时候需要用到远程的对象存储服务,存储一些图片、语音、视频等对象
- 此时可能会去购买云厂商提供的云服务,比如腾讯的COS、阿里的OSS等,但是这些服务流量一般比较贵
- 所以我们可以自己在服务器里搭建一个
2.Minio是什么
- MinIO是一个用Golang开发的基于Apache License v2.0开源协议的对象存储服务。
- 兼容亚马逊S3云存储服务接口,适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
- github地址:https://github.com/minio
3.kubernetes安装单机版Minio
- 在做项目的时候用到了,可以先使用kubernetes搭建一个单机版,快速体验一下。生产上再使用分布式搭建
- 先创建一个minio的命名空间
kubectl create ns minio
- minio-deploy.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: minio namespace: minio spec: replicas: 1 selector: matchLabels: app: minio template: metadata: labels: app: minio spec: containers: - name: minio image: minio/minio imagePullPolicy: IfNotPresent command: - /bin/sh - -c - minio server /data --console-address ":5000" ports: - name: data containerPort: 9000 protocol: "TCP" - name: console containerPort: 5000 protocol: "TCP" resources: requests: memory: 512Mi cpu: 50m limits: memory: 512Mi cpu: 100m
- minio-svc.yaml
apiVersion: v1 kind: Service metadata: name: minio namespace: minio spec: type: NodePort ports: - name: data port: 9000 targetPort: 9000 protocol: TCP nodePort: 32000 - name: console port: 5000 targetPort: 5000 protocol: TCP nodePort: 32001 selector: app: minio
- 这里直接使用svc的NodePort开放了主机的两个端口:32000、32001。
- 其中32000映射到容器的9000,是minio的服务端口
- 32001映射到容器的5000,是minio的控制台端口
- 因此,在浏览器访问 127.0.0.1:32001就可以进入控制台,默认账号密码均是:minioadmin。
- 不过,在项目代码中向minio上传对象数据,需要连接32000端口
4.java向minio上传数据
- 可以参考:https://zhuanlan.zhihu.com/p/148270691
- 根据需要修改即可