Bootstrap

kubernetes安装minio对象存储服务

云原生学习路线导航页(持续更新中)

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上传数据

;