对象存储minio在k8s上部署实践

828 阅读1分钟

目前准备在k8s上部署对象存储minio,我采用了有状态服务部署的,可单机也可以分布式部署,在部署前,对应的k8s环境上需要预置存储卷类型,对应的yaml文件如下:

---
apiVersion: v1
kind: Secret
metadata:
  name: minio
  namespace: "default"
  labels:
    app.kubernetes.io/name: minio
type: Opaque
data:
  root-user: "SEJFNFpQUUEzT0xOTlNNVU5XV0M="
  root-password: "Tk5kZ3lEUjNMYmRwbm1YZThBUGNIbG5rVG5iRk9ORDJiczlsQ215VQ=="
---
apiVersion: v1
kind: Service
metadata:
  name: minio-service
  namespace: "default"
spec:
  selector:
    app.kubernetes.io/name: minio
  type: NodePort
  ports:
    - name: minio
      protocol: TCP
      port: 9001
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: minio-statefulset
  namespace: "default"
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: minio
  serviceName: minio
  replicas: 1
  template:
    metadata:
      labels:
        app.kubernetes.io/name: minio
    spec:
      containers:
        - name: minio
          image: harbor.e-tudou.com/ops-mw-snapshot/minio:RELEASE.2022-07-26T00-53-03Z
          resources:
            requests:
              memory: "64Mi"
              cpu: "250m"
            limits:
              memory: "128Mi"
              cpu: "500m"
          env:
            - name: "TZ"
              value: "Asia/Shanghai"
            - name: MINIO_ROOT_USER
              valueFrom:
                secretKeyRef:
                  name: minio
                  key: root-user
            - name: MINIO_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: minio
                  key: root-password
            - name: MINIO_BROWSER
              value: "on"
            - name: MINIO_PROMETHEUS_AUTH_TYPE
              value: "public"
          ports:
            - containerPort: 9001       #容器内端口可根据自身进行更改
              name: minio
          command:
            - /bin/bash
            - -c
          args:
            - minio server /data --console-address :9001 #容器内端口可根据自身进行更改
          volumeMounts:
            - name: data
              mountPath: /data
          livenessProbe:
            httpGet:
              path: /minio/health/live
              port: minio
              scheme: "HTTP"
            initialDelaySeconds: 5
            periodSeconds: 5
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 5
          readinessProbe:
            tcpSocket:
              port: minio
            initialDelaySeconds: 5
            periodSeconds: 5
            timeoutSeconds: 1
            successThreshold: 1
            failureThreshold: 5
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 100Gi
        #storageClassName: "csi-rbd-sc"    #存储卷名

亲测可用,欢迎各位批评指正!!!