在 Kubernetes v1.26 上部署 Minio 集群版的步骤如下:
- 创建一个存储类别 (StorageClass),指定可用的存储后端。例如,这里使用 AWS EBS 存储后端。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: minio-storage-class
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2 # 或者 io1, st1, sc1 等其他合适的 EBS 类型。
- 创建 PVC(Persistent Volume Claim)来申请存储资源。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: minio-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi # 指定需要多少存储空间。
storageClassName: minio-storage-class # 引用前面创建的存储类别。
- 在 Kubernetes 中创建 ConfigMap,配置 Minio 的环境变量和启动参数。
apiVersion: v1
kind: ConfigMap
metadata:
name: minio-configmap
data:
MINIO_ACCESS_KEY: "accesskey"
MINIO_SECRET_KEY: "secretkey"
- 创建 StatefulSet 来运行 Minio 实例。
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: minio-statefulset
spec:
serviceName : minio-service
replicas : 4 # 配置 Minio 实例数量。
# 定义容器和卷的模板。
template:
metadata:
labels:
app: minio
spec:
containers:
- name: minio
image: minio/minio
envFrom: # 引用前面创建的 ConfigMap。
- configMapRef:
name: minio-configmap
command : ["/usr/bin/docker-entrypoint.sh"]
args : ["server", "/export"] # 指定 Minio 数据目录。
ports :
- containerPort : 9000 # 配置 Minio 监听端口。
volumeMounts :
- name : minio-pvc
mountPath : /export
# 配置 Pod 的卷声明,引用前面创建的 PVC。
volumeClaimTemplates :
- metadata :
name : minio-pvc
spec :
accessModes : [ "ReadWriteOnce" ]
resources :
requests :
storage : 50Gi # 每个实例都需要分配同样大小的存储空间。
storageClassName : minio-storage-class
- 创建 Service 来暴露 Minio 实例到集群外部。
apiVersion: v1
kind: Service
metadata:
name: minio-service
spec:
selector:
app: minio
type: ClusterIP # 或者使用 LoadBalancer 类型来暴露到公网上。
ports:
- protocol: TCP
port: 9000 # 和上文中指定的端口一致。
以上是在 Kubernetes v1.26 上部署 Minio 集群版的完整步骤。您可以根据自己的需求进行相应的调整。