minio 部署 k8s 版
minio 部署 k8s 版
程序员朱永胜在 Kubernetes (k8s) 上部署 MinIO 可以实现高可用和可扩展的对象存储系统。以下是详细步骤:
前提条件
- 一个运行中的 Kubernetes 集群。
kubectl
已经配置好并连接到你的 Kubernetes 集群。
部署步骤
创建命名空间(可选)
为了更好地管理资源,可以创建一个单独的命名空间:
1
kubectl create namespace minio
创建 MinIO 配置文件
创建一个名为
minio-deployment.yaml
的文件,内容如下: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
43apiVersion: apps/v1
kind: StatefulSet
metadata:
name: minio
namespace: minio
labels:
app: minio
spec:
selector:
matchLabels:
app: minio
serviceName: minio
replicas: 4
template:
metadata:
labels:
app: minio
spec:
containers:
- name: minio
image: minio/minio:latest
args:
- server
- http://minio-{0...3}.minio.minio.svc.cluster.local/data
env:
- name: MINIO_ACCESS_KEY
value: "minioadmin"
- name: MINIO_SECRET_KEY
value: "minioadmin"
ports:
- containerPort: 9000
name: minio
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce" ]
resources:
requests:
storage: 10Gi创建服务
创建一个名为
minio-service.yaml
的文件,内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14apiVersion: v1
kind: Service
metadata:
name: minio
namespace: minio
labels:
app: minio
spec:
ports:
- port: 9000
name: minio
clusterIP: None
selector:
app: minio应用配置文件
使用
kubectl apply
命令部署 MinIO:1
2kubectl apply -f minio-deployment.yaml
kubectl apply -f minio-service.yaml验证部署
使用以下命令查看 MinIO pods 是否成功运行:
1
kubectl get pods -n minio
输出应该类似于:
1
2
3
4
5NAME READY STATUS RESTARTS AGE
minio-0 1/1 Running 0 1m
minio-1 1/1 Running 0 1m
minio-2 1/1 Running 0 1m
minio-3 1/1 Running 0 1m访问 MinIO 控制台
为了访问 MinIO 控制台,你需要创建一个外部服务(LoadBalancer 或 NodePort)。以下是一个 NodePort 服务的示例:
创建一个名为
minio-external-service.yaml
的文件,内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15apiVersion: v1
kind: Service
metadata:
name: minio-external
namespace: minio
labels:
app: minio
spec:
type: NodePort
ports:
- port: 9000
nodePort: 32000
name: minio
selector:
app: minio应用配置文件:
1
kubectl apply -f minio-external-service.yaml
现在,你可以通过
http://<NodeIP>:32000
访问 MinIO 控制台。NodeIP 是你的 Kubernetes 集群中的任意一个节点