二进制常规部署minio
因为我之前没部署过minio,在helm部署前我觉得需要先通过常规的部署,熟悉一下
这种部署其实就相当于单点的部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 官网给的部署方式很简单 采用二进制部署方式,系统是centos7.9
服务端: wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio chmod +x minio MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"
默认的账号admin,默认密码password API地址9000端口,网页地址9001端口
也可以通过nohup方式后台运行 MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password nohup ./minio server /mnt/data --console-address ":9001" &
客户端:
wget https://dl.minio.org.cn/client/mc/release/linux-amd64/mc chmod +x mc ln -s /root/mc /bin/mc
mc alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD ↓ mc alias set 'myminio' 'http://192.168.10.102:9000' 'admin' 'password'
就说明已经将myminio这个minio服务器添加到了本地
|
通过mc工具对存储桶进行CRUD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| 我现在在网页已经添加了一个存储桶名字test
mc ls myminio [2024-12-04 13:52:23 CST] 0B test/
mc mb myminio/wangsheng mc ls myminio [2024-12-04 13:52:23 CST] 0B test/ [2024-12-04 14:01:09 CST] 0B wangsheng/
mc rb myminio/test Removed `myminio/test` successfully.
mc admin info myminio/wangsheng ● 192.168.10.102:9000 Uptime: 18 minutes Version: 2024-11-07T00:52:20Z Network: 1/1 OK Drives: 1/1 OK Pool: 1
┌──────┬───────────────────────┬─────────────────────┬──────────────┐ │ Pool │ Drives Usage │ Erasure stripe size │ Erasure sets │ │ 1st │ 16.1% (total: 45 GiB) │ 1 │ 1 │ └──────┴───────────────────────┴─────────────────────┴──────────────┘
0 B Used, 1 Bucket, 0 Objects 1 drive online, 0 drives offline, EC:0
mc cp nohup.out myminio/wangsheng/test01 /root/nohup.out: 1.39 KiB / 1.39 KiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 158.59 KiB/s 0s
mc cp data/ myminio/wangsheng/dir01 --recursive ...ndex_jsp.java: 425.34 MiB / 425.34 MiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 158.01 MiB/s 2s
mc rm myminio/wangsheng/test01 Removed `myminio/wangsheng/test01`.
mc rm -r --force myminio/wangsheng/dir01
mc admin user add myminio wangsheng wangsheng12345
mc admin user enable myminio wangsheng
|
下载Chart
1 2 3 4 5
| helm search repo minio 可以看到bitnami和aliyun都有 但是bitnami很新,是24年11月的版本
helm pull bitnami/minio
|
观察chart与修改配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| 需求镜像: docker.io/bitnami/minio:2024.11.7-debian-12-r0 docker.io/bitnami/minio-client:2024.10.29-debian-12-r1 docker.io/bitnami/os-shell:12-debian-12-r32 在Value文件中可以修改
Value文件结构: global-全局配置,包括指定镜像仓库地址,拉取策略,存储类名等 通用配置-包括nameOverride,helm全名,command启动命令,污点,亲和性,节点selecetor等 image-镜像信息 clientImage-命令行镜像信息 auth-认证信息,包括初始密码 tls-证书认证信息,默认为关
修改内容: 1.因为我是单master节点,所以打一个污点 tolerations: - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoSchedule" 2.指定一个密码,如果不指定就会默认用base64生成的密码 注意修改的密码必须大于8位,不然会报错 rootPassword: "wangsheng" 3.指定存储类,直接从供应商拉pv global: storageClass: "local-path"
4.指定statefulset副本数,拉满,战斗爽 statefulset: replicaCount: 5
5.修改mode 默认是standalone,此时会使用deployment部署 改成distributed,就会使用statefulset部署 mode: distributed
如果用statefulset部署,相当于就是分布式部署了
|
helm部署minio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| helm install minio ./ 如果和我配置一样,那应该部署没啥问题 kubectl get pods | grep minio minio-0 1/1 Running 0 5m15s minio-1 1/1 Running 0 5m15s minio-2 1/1 Running 0 5m15s minio-3 1/1 Running 0 5m15s minio-4 1/1 Running 0 5m15s
kubectl get svc | grep minio minio ClusterIP 10.102.72.244 <none> 9000/TCP,9001/TCP 5m31s minio-headless ClusterIP None <none> 9000/TCP,9001/TCP 5m31s
helm list | grep minio minio default 1 2024-12-04 15:00:13.021768562 +0800 CST deployed minio-14.8.5 2024.11.7
|
部署minio-client
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| chart推荐的方法: export ROOT_USER=$(kubectl get secret --namespace default minio -o jsonpath="{.data.root-user}" | base64 -d) export ROOT_PASSWORD=$(kubectl get secret --namespace default minio -o jsonpath="{.data.root-password}" | base64 -d) kubectl run --namespace default minio-client \ --rm --tty -i --restart='Never' \ --env MINIO_SERVER_ROOT_USER=$ROOT_USER \ --env MINIO_SERVER_ROOT_PASSWORD=$ROOT_PASSWORD \ --env MINIO_SERVER_HOST=minio \ --image docker.io/bitnami/minio-client:2024.10.29-debian-12-r1 -- admin info minio
但是我不推荐,因为我用这玩意一直在报错很烦
echo "MinIO® web URL: http://127.0.0.1:9001/minio" nohup kubectl port-forward --namespace default svc/minio 9000:9000 &
mc alias set 'myminio' 'http://127.0.0.1:9000' 'admin' 'wangsheng'
|
分布式部署说明
helm的这种部署一种有状态的分布式部署,即将数据进行分片:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ls /data pvc-2742941f-3387-44a9-809e-abed875d52c0_default_data-minio-0 pvc-65c88bb7-7361-48f1-b6a6-2cfbda4191c8_default_data-minio-4 pvc-b84eef22-0bde-4610-932c-9ed8f172121c_default_data-minio-3 pvc-bb65bb62-ad08-47dd-a597-c8c38e57e24f_default_data-minio-2 pvc-e0c33dc7-000d-4b50-a4ea-dfeffc5276db_default_data-minio-1
这里的每个文件夹中都存放了一份我上传的文件
现在上传一下 mc cp bitnami-mysql8.tar.gz myminio/wangsheng/bitnami-mysql8.tar.gz
sudo du -ah -d 1 . 230M ./pvc-2742941f-3387-44a9-809e-abed875d52c0_default_data-minio-0 230M ./pvc-e0c33dc7-000d-4b50-a4ea-dfeffc5276db_default_data-minio-1 230M ./pvc-65c88bb7-7361-48f1-b6a6-2cfbda4191c8_default_data-minio-4 230M ./pvc-b84eef22-0bde-4610-932c-9ed8f172121c_default_data-minio-3 230M ./pvc-bb65bb62-ad08-47dd-a597-c8c38e57e24f_default_data-minio-2
我这个文件原大小是680M,而可以看到分成了5份230M的文件,总大小来到了1G 这是因为分布式存储因为做了分布式奇偶校验,所以产生了额外的开销, 数据分片份数越多,开销占源文件比例就越小
|