【云原生】Minio on k8s 講解與實戰操作
作者:liugp
MinIO 是在 GNU Affero 通用公共許可證 v3.0 下發布的高性能對象存儲。它與 Amazon S3 云存儲服務 API 兼容。使用 MinIO 為機器學習、分析和應用程序數據工作負載構建高性能基礎架構。
一、概述
MinIO 是在 GNU Affero 通用公共許可證 v3.0 下發布的高性能對象存儲。它與 Amazon S3 云存儲服務 API 兼容。使用 MinIO 為機器學習、分析和應用程序數據工作負載構建高性能基礎架構。
官方文檔:https://docs.min.io/中文文檔:http://docs.minio.org.cn/docs/GitHub地址:https://github.com/minio/minio/
二、開始編排部署
因為minio是有chart包,所以這里就基于現有的chart包進行改造。
1)下載chart 包
helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/minio --version 11.10.16
tar -xf minio-11.10.16.tgz
2)構建鏡像
這里就不重新構建鏡像了,只是把遠程的包推送到本地harbor倉庫,如有不知道怎么構建鏡像的小伙伴,歡迎留言或私信。
docker pull docker.io/bitnami/minio:2022.11.11-debian-11-r0
docker tag docker.io/bitnami/minio:2022.11.11-debian-11-r0 myharbor.com/bigdata/minio:2022.11.11-debian-11-r0
docker push myharbor.com/bigdata/minio:2022.11.11-debian-11-r0
docker pull docker.io/bitnami/minio-client:2022.11.7-debian-11-r0
docker tag docker.io/bitnami/minio-client:2022.11.7-debian-11-r0 myharbor.com/bigdata/minio-client:2022.11.7-debian-11-r0
docker push myharbor.com/bigdata/minio-client:2022.11.7-debian-11-r0
3)修改yaml編排
- minio/values.yaml
image:
registry: myharbor.com
repository: bigdata/minio
tag: 2022.11.11-debian-11-r0
clientImage:
registry: myharbor.com
repository: bigdata/minio-client
tag: 2022.11.7-debian-11-r0
# `standalone` or `distributed`
mode: distributed
# 登錄賬號,密碼
auth:
rootUser: admin
rootPassword: "admin12345"
statefulset:
## @param statefulset.replicaCount Number of pods per zone (only for MinIO® distributed mode). Should be even and `>= 4`
##
replicaCount: 4
service:
## @param service.type MinIO® service type
##
type: NodePort
nodePorts:
api: "31900"
console: "31901"
persistence:
enabled: true
storageClass: "local-minio-stroage"
size: 10Gi
local:
- name: minio-0
host: "local-168-182-110"
path: "/opt/bigdata/servers/minio/data/data1"
- name: minio-1
host: "local-168-182-111"
path: "/opt/bigdata/servers/minio/data/data1"
- name: minio-2
host: "local-168-182-112"
path: "/opt/bigdata/servers/minio/data/data1"
- name: minio-3
host: "local-168-182-110"
path: "/opt/bigdata/servers/minio/data/data2"
- minio/templates/pv.yaml
{{- range .Values.persistence.local }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ .name }}
labels:
name: {{ .name }}
spec:
storageClassName: {{ $.Values.persistence.storageClass }}
capacity:
storage: {{ $.Values.persistence.size }}
accessModes:
- ReadWriteOnce
local:
path: {{ .path }}
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- {{ .host }}
---
{{- end }}
4)開始部署
ssh local-168-182-110 mkdir -p /opt/bigdata/servers/minio/data/data{1..2}
ssh local-168-182-111 mkdir -p /opt/bigdata/servers/minio/data/data{1..2}
ssh local-168-182-112 mkdir -p /opt/bigdata/servers/minio/data/data{1..2}
# --dry-run 模擬安裝
# --debug 開啟debug
# helm install --dry-run --debug minio ./minio -n minio --create-namespace
helm install --debug minio ./minio -n minio --create-namespace
NOTES
CHART NAME: minio
CHART VERSION: 11.10.16
APP VERSION: 2022.11.11
** Please be patient while the chart is being deployed **
MinIO® can be accessed via port on the following DNS name from within your cluster:
minio.minio.svc.cluster.local
To get your credentials run:
export ROOT_USER=$(kubectl get secret --namespace minio minio -o jsnotallow="{.data.root-user}" | base64 -d)
export ROOT_PASSWORD=$(kubectl get secret --namespace minio minio -o jsnotallow="{.data.root-password}" | base64 -d)
To connect to your MinIO® server using a client:
- Run a MinIO® Client pod and append the desired command (e.g. 'admin info'):
kubectl run --namespace minio 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 myharbor.com/bigdata/minio-client:2022.11.7-debian-11-r0 -- admin info minio
To access the MinIO® web UI:
- Get the MinIO® URL:
export NODE_PORT=$(kubectl get --namespace minio -o jsnotallow="{.spec.ports[0].nodePort}" services minio)
export NODE_IP=$(kubectl get nodes --namespace minio -o jsnotallow="{.items[0].status.addresses[0].address}")
echo "MinIO? web URL: http://$NODE_IP:$NODE_PORT/minio"
查看
kubectl get pods,svc -n minio -owide
5)測試驗證
web登錄:添加鏈接描述http://local-168-182-110:31901/賬號/密碼:admin/admin12345
創建桶并上傳文件
mc客戶端
# 查看notes
helm get notes minio -n minio
# 啟動客戶端
export ROOT_USER=$(kubectl get secret --namespace minio minio -o jsnotallow="{.data.root-user}" | base64 -d)
export ROOT_PASSWORD=$(kubectl get secret --namespace minio minio -o jsnotallow="{.data.root-password}" | base64 -d)
kubectl run --namespace minio 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 myharbor.com/bigdata/minio-client:2022.11.7-debian-11-r0 -- admin info minio
6)卸載
helm uninstall minio -n minio
ssh local-168-182-110 rm -fr /opt/bigdata/servers/minio/data/data{1..2}/*
ssh local-168-182-111 rm -fr /opt/bigdata/servers/minio/data/data{1..2}/*
ssh local-168-182-112 rm -fr /opt/bigdata/servers/minio/data/data{1..2}/*
git 地址:https://gitee.com/hadoop-bigdata/minio-on-k8s
責任編輯:武曉燕
來源:
大數據與云原生技術分享