文章目录
一、前言
分布式文件存储系统,作为一个码农,多多少少会听说大名鼎鼎 hadoop 的文件系统 HDFS 和 FastDFS。这个两个在文件存储各有优劣,但是对于现在流行的k8s容器化部署来说,这两个部署都过于麻烦,而且官网也没有明确提出部署方法。
下面就要说到我们的主角
二、Minio
说到 minio,我们最关心的两点,一点是是否开源,其次是好不好用。
从官网看出,是绝对开源的。还有用户遍布很广。
三、k8s容器化部署
官网提供两个方式
-
MinIO Helm Chart通过一个简单的命令即可提供自定义而且简单的MinIO部署。更多关于MinIO Helm部署的资料,请访问这里.
-
你也可以浏览Kubernetes MinIO示例 ,通过.yaml文件来部署MinIO。
Helm 需要联网,这个对于没有网络的服务器,简直是噩耗。
所以,我们准备用最传统的yaml的方式进行部署
参考官网:
下载 —> kubernetes —> kubernetes CLI
注意:
账号密码 root123/adminadmin
集群方式部署
最少的节点为:4
存储节点为 50 GB
完整的yml
apiVersion: v1
kind: Service
metadata:
name: minio
labels:
app: minio
spec:
clusterIP: None
ports:
- port: 9000
name: minio
selector:
app: minio
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: minio
spec:
serviceName: minio
replicas: 4
template:
metadata:
labels:
app: minio
spec:
containers:
- name: minio
env:
- name: MINIO_ACCESS_KEY
value: "root123"
- name: MINIO_SECRET_KEY
value: "adminadmin"
image: minio/minio
args:
- server
- http://minio-{0...3}.minio.default.svc.cluster.local/data
ports:
- containerPort: 9000
# These volume mounts are persistent. Each pod in the PetSet
# gets a volume mounted based on this field.
volumeMounts:
- name: data
mountPath: /data
# These are converted to volume claims by the controller
# and mounted at the paths mentioned above.
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
# Uncomment and add storageClass specific to your requirements below. Read more https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
#storageClassName:
---
apiVersion: v1
kind: Service
metadata:
name: minio-service
spec:
type: LoadBalancer
ports:
- port: 9000
targetPort: 9000
protocol: TCP
selector:
app: minio
以上镜像为 minio/minio
需要设置储存卷的名字 storageClassName
有了完整的yaml,部署就是简简单单的
如果看了上面的yml还不会部署,可以在留言,一天内回复!!!!