专业的编程技术博客社区

网站首页 > 博客文章 正文

测试环境下对象存储服务搭建(对象存储性能测试)

baijin 2024-09-26 06:38:05 博客文章 3 ℃ 0 评论

对象存储使用的场景很多,本文分享在k8s环境下快速部署一个对象存储服务的方法。选用的对象存储服务是Minio。在Java开发环境下,Minio可以非常方便的在Spring Cloud框架下集成。

文章介绍的方法适合在测试环境下使用,因为Minio是单节点,单存储目录,使用的PV是“hostPath”类型的,高可用没有保证,在生产环境下,建议部署Minio在k8s集群外,并配置专用的没有格式化硬盘作为Minio使用的硬盘。

  • 创建PV

测试环境如果有“Storage Class”,可以使用SC来创建PV。这里使用主机的目录作为PV,下面是yaml文件,预先在集群中主机“10.0.10.12”中创建目录“/var/lib/k8s/minio-data”,

apiVersion: v1
kind: PersistentVolume
metadata:
  name: minio-pv
spec:
  storageClassName: manual
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /var/lib/k8s/minio-data  #主机的目录,根据实际情况修改
    type: Directory
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - 10.0.10.12   #根据实际情况修改
  • 创建PVC

创建好PV后,PVC对象比较简单,直接上yaml文件,

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minio-pvc
  namespace: example  #根据实际namespace修改
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

部署后,可以看到PVC已经成功绑定PV,

  • 部署Minio

Minio部署会用到minio镜像,如果镜像不能顺利拉取到,可以先想办法下载到镜像,然后上传到要部署的主机。下面是使用的部署文件,

---
apiVersion: v1
kind: Service
metadata:
  name: minio
  namespace: example
spec:
  selector:
    app: minio
  ports:
    - name: apiport
      protocol: TCP
      port: 9000
      targetPort: 9000
    - name: webport
      protocol: TCP
      port: 9090
      targetPort: 9090
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: minio
  namespace: example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: minio
  template:
    metadata:
      labels:
        app: minio
    spec:
      containers:
      - name: minio
        image: minio/minio
        imagePullPolicy: IfNotPresent
        command:
        - /bin/bash
        - -c
        args: 
        - minio server /data --console-address :9090
        env:
          - name: MINIO_ROOT_USER
            value: "minioadmin"
          - name: MINIO_ROOT_PASSWORD
            value: "longlongpwd"
        volumeMounts:
          - name: minio-data
            mountPath: /data
      volumes:
        - name: minio-data
          persistentVolumeClaim:
            claimName: minio-pvc
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: minio
  namespace: example
  annotations:
    nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
    ingress.kubernetes.io/proxy-request-buffering: "off"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: minio
          servicePort: 9000
    host: minio-test.example.com

这样可以通过域名“minio-test.example.com”访问到上传到Minio的文件。注意,这里使用的k8s版本是“v1.16.8”,如果使用较新的版本,Ingress的配置要根据官方文档修改。

  • 配置Minio管理后台

部署完Minio后,可以通过链接“http://服务器IP:ServiceNodePort/”访问Minio后台。笔者的环境查到Minio的Web管理地址是“http://10.0.10.122:30849”,

浏览器访问,然后创建桶、访问凭据、策略即可。

一种常见的使用场景是存储在Minio的文件被前端代码访问,这种情况下,必须给桶内的文件赋予只读权限,配置也很简单,

这样桶内的文件不用任何凭据即可只读访问。

再次强调上面的内容适合在测试环境下使用,如果要在生产环境下使用,请严格参照Minio官方文档,毕竟数据无价。

希望这篇文章能帮到正在奋斗的你!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表