一、部署minio operator
- k8s version:v1.20.15
- minio version :v4.4.16
(1)安裝kubectl-minio插件
自選minio-operaterd的版本下載包
minio-operater plugin
# 上傳服務(wù)器并解壓
unzip kubectl-minio_linux_amd64.zip "kubectl-minio" -d /usr/local/bin/
# 查看是否安裝成功。如返回版本信息則安裝成功
kubectl minio version
# 初始化
kubectl minio init
# operator默認(rèn)部署到minio-operator命名空間中,如果需要指定命名空間,可使用kubectl minio init --namespace {YOUR-NAMESPACE}。
# 使用群集。在配置operator的DNS主機(jī)名時,將本地作為群集域。指定kubectl minio init --cluster域參數(shù)以設(shè)置不同的集群域值。
# 驗證是否安裝成功
[root@k8s-master-4 ~]# kubectl get all -n minio-operator
NAME READY STATUS RESTARTS AGE
pod/console-5f4f574656-5s2wx 1/1 Running 0 5h52m
pod/minio-operator-c78cb4c65-875rt 1/1 Running 0 5h52m
pod/minio-operator-c78cb4c65-x4869 1/1 Running 0 5h52m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/console ClusterIP 10.98.66.116 <none> 9090/TCP,9443/TCP 5h52m
service/operator ClusterIP 10.96.133.155 <none> 4222/TCP,4221/TCP 5h52m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/console 1/1 1 1 5h52m
deployment.apps/minio-operator 2/2 2 2 5h52m
NAME DESIRED CURRENT READY AGE
replicaset.apps/console-5f4f574656 1 1 1 5h52m
replicaset.apps/minio-operator-c78cb4c65 2 2 2 5h52m
# 訪問Operator Console,新開一個終端窗口
[root@k8s-master-4 ~]# kubectl minio proxy -n minio-operator
Starting port forward of the Console UI.
To connect open a browser and go to http://localhost:9090
Current JWT to login: eyJhbGciOiJSUzI1NiIsImtpZCI6Ii1MY0QybWl6YklaUzE1MHZQNzcxcFNpc2JrUk1NdGU1X1MzaHUtY0hmMWcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaW5pby1vcGVyYXRvciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjb25zb2xlLXNhLXRva2VuLThwcTRtIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImNvbnNvbGUtc2EiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyMzY4ODJjZS1hMDhhLTQ0MzEtOWY5MC1iN2IxMWJkZWJmMDEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6bWluaW8tb3BlcmF0b3I6Y29uc29sZS1zYSJ9.VpR7HaUT6AU_u61AgGAe5thnXoWcPP7nSK2S7zorUXVShdKfNIO1pdvTz1XJ9X1b7hlk3Yqn6LfLz1WJXxDBhEz_pHSqJ0s-RCv00hEHGRLPzyUdI-s9zjOwwqU7yITxkyNswodiZ6jRCOiMwqPRZEHKetzMZlckK6xvIO6gpcQd0dDwXagNyHGArb8-zvBLzqWhgx0PoB3B-FHuy7VabGzVDoFdMQiIU20KOjvdQEXPPZRfk-RBMM-hy7HdCM-rk4sTYEhTGz9dUzj1_umvQbupZw7kEcw588MMF9Q2Q66hOCOC-6YbQTPJIHzqwuYNv4SOzkj5hds2eUi_1FHHDA
Forwarding from 0.0.0.0:9090 -> 9090
Handling connection for 9090
# JWT的值為后續(xù)登陸界面時使用
訪問地址:http://ip:9090
二、創(chuàng)建StorageClass
1、sc-minio.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: minio-local-storage # SC-NAME
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
創(chuàng)建
kubectl apply -f sc-minio.yaml
# 查看是否創(chuàng)建成功
[root@k8s-master-4 ~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
minio-local-storage kubernetes.io/no-provisioner Retain WaitForFirstConsumer false 5h38m
2、創(chuàng)建所需的永久卷
序號 | 路徑 | 容量 (G) | 說明 | 所在節(jié)點 |
---|---|---|---|---|
1 | /data/1 | 5 | 租戶使用 | 3個節(jié)點各1個 |
2 | /data/log1 | 5 | 租戶使用 | 3個節(jié)點各1個 |
3 | /data/minio-tenant-1-log-0 | 5 | 審計日志 | k8s-master-4 |
4 | /data/minio-tenant-1-prometheus | 5 | 監(jiān)控數(shù)據(jù) | k8s-master-4 |
租戶:30G
# 創(chuàng)建目錄(三個節(jié)點)
mkdir -p /data/1 /data/log1
# 在K8s-master-4創(chuàng)建審計日志目錄、監(jiān)控目錄
mkdir -p /data/minio-tenant-1-log-0 /data/minio-tenant-1-prometheus
三、PV && PVC
為MinIO租戶中的每個卷創(chuàng)建一個PV。例如,假設(shè)一個Kubernetes集群有3個節(jié)點,每個節(jié)點有2個本地連接的驅(qū)動器,那么總共創(chuàng)建6個本地PV。名稱、容量大小、目錄等可根據(jù)個人環(huán)境進(jìn)行配置:
1、pv-tenant.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-k8s-master-4-data1 # PV-NAME
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/1 # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-master-4 # NODE-NAME
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-k8s-master-4-log1 # PV-NAME
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/log1 # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-master-4 # NODE-NAME
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-k8s-node1-5-data1 # PV-NAME
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/1 # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-node1-5 # NODE-NAME
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-k8s-node1-5-log1 # PV-NAME
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/log1 # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-node1-5 # NODE-NAME
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-k8s-node2-6-data1 # PV-NAME
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/1 # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-node2-6 # NODE-NAME
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-k8s-node2-6-log1 # PV-NAME
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/log1 # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-node2-6 # NODE-NAME
創(chuàng)建審計日志PV、PVC配置文件(后續(xù)備用):
2、pv-pvc-minio-tenant-1-log-0.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-tenant-1-log # PV-NAME
namespace: minio-tenant-1
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/minio-tenant-1-log-0 # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-master-4 # NODE-NAME
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
v1.min.io/log-pg: minio-tenant-1-log
name: minio-tenant-1-log-minio-tenant-1-log-0
namespace: minio-tenant-1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "5368709120"
storageClassName: minio-local-storage
volumeMode: Filesystem
volumeName: minio-tenant-1-log
創(chuàng)建租戶監(jiān)控prometheus使用的PV、PVC配置文件(后續(xù)備用):
3、pv-pvc-minio-tenant-prometheus.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-tenant-1-prometheus # PV-NAME
namespace: minio-tenant-1
spec:
capacity:
storage: 5Gi # capacity
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # default ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: minio-local-storage # SC-NAME
local:
path: /data/minio-tenant-1-prometheus # SC local-path
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s3-master # NODE-NAME
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
v1.min.io/prometheus: minio-tenant-1-prometheus
name: minio-tenant-1-prometheus-minio-tenant-1-prometheus-0
namespace: minio-tenant-1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: minio-local-storage
volumeMode: Filesystem
volumeName: minio-tenant-1-prometheus
# 為MinIO Tenant創(chuàng)建命名空間
kubectl create namespace minio-tenant-1
# 創(chuàng)建租戶pvc
kubectl apply -f pv-tenant.yaml
# 查看創(chuàng)建的pv
kubectl get pv | grep minio
四、創(chuàng)建MinIO Tenant租戶
使用kubectl minio租戶創(chuàng)建命令創(chuàng)建minio租戶。該命令始終使用MinIO服務(wù)器和MinIO控制臺的最新穩(wěn)定Docker映像。
以下示例創(chuàng)建了一個3節(jié)點MinIO部署,6個驅(qū)動器的總?cè)萘繛?0Gi。此時會同時創(chuàng)建審計日志、prometheus監(jiān)控相關(guān)pod。
# 查看minio支持的api-resource版本
[root@k8s-master-4 ~]# kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
......
tenants tenant minio.min.io/v2 true Tenant
......
[root@k8s-master-4 ~]# kubectl minio tenant create minio-tenant-1 \
> --servers 3 \
> --volumes 6 \
> --capacity 30Gi \
> --storage-class minio-local-storage \
> --namespace minio-tenant-1
Tenant 'minio-tenant-1' created in 'minio-tenant-1' Namespace
Username: W175STC2EU3QG0KXEEUN
Password: BhbYGhIZamMlYQXjYOZaD8TZzJno9zNwXa0VUmrq
Note: Copy the credentials to a secure location. MinIO will not display these again.
APPLICATION SERVICE NAME NAMESPACE SERVICE TYPE SERVICE PORT
MinIO minio minio-tenant-1 ClusterIP 443
Console minio-tenant-1-console minio-tenant-1 ClusterIP 9443
# 查看租戶狀態(tài)
# 當(dāng)前狀態(tài)在初始化過程中,等待Log Search就緒,此過程可能要花費(fèi)一段時間,租戶成功后,狀態(tài)會顯示Initialized:
[root@k8s-master-4 ~]# kubectl get tenants -n minio-tenant-1
NAME STATE AGE
minio-tenant-1 Initialized 19h
# 各pod、服務(wù)等對象成功狀態(tài)
kubectl -n minio-tenant-1 get all
# 查看創(chuàng)建的pvc(如圖二)
kubectl -n minio-tenant-1 get pvc
# 查看當(dāng)前租戶
[root@k8s-master-4 ~]# kubectl minio tenant list
Tenant 'minio-tenant-1', Namespace 'minio-tenant-1', Total capacity 30 GiB
Current status: Initialized
MinIO version: minio/minio:RELEASE.2022-04-16T04-26-02Z
# 可以使用kubectl端口轉(zhuǎn)發(fā)程序臨時公開每個服務(wù)。運(yùn)行以下示例將流量從運(yùn)行kubectl的主機(jī)轉(zhuǎn)發(fā)到Kubernetes集群內(nèi)運(yùn)行的服務(wù)。
# 租戶端口轉(zhuǎn)發(fā)
[root@k8s-master-4 ~]# kubectl port-forward service/minio 443:443 -n minio-tenant-1
Forwarding from 127.0.0.1:443 -> 9000
Forwarding from [::1]:443 -> 9000
[root@k8s-master-4 ~]# kubectl port-forward service/minio-tenant-1-console 9443:9443 -n minio-tenant-1
Forwarding from 127.0.0.1:9443 -> 9443
現(xiàn)在我們進(jìn)入minio的控制臺查看
文章來源:http://www.zghlxwxcb.cn/news/detail-845088.html
租戶狀態(tài)已經(jīng)ok了文章來源地址http://www.zghlxwxcb.cn/news/detail-845088.html
五、其他操作
# 刪除minio-operater
kubectl minio delete
# 刪除tenant
kubectl minio tenant delete minio-tenant-1 --namespace minio-tenant-1
# 刪除pvc、pv
kubectl delete pvc --all -n minio-tenant-1
kubectl delete pv --all -n minio-tenant-1
# 刪除命名空間
kubectl delete ns minio-tenant-1
到了這里,關(guān)于【Kubernetes】k8s使用minio作為對象存儲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!