话不多说,直接干货。

创建 minio-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: minio
  labels:
    app: minio
spec:
  replicas: 1
  selector:
    matchLabels:
      app: minio
  template:
    metadata:
      labels:
        app: minio
    spec:
      containers:
        - name: minio
          image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/minio:latest
          ports:
            - containerPort: 9000
            - containerPort: 9001
          env:
            - name: MINIO_ROOT_USER
              value: "minioadmin"
            - name: MINIO_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: minio-secrets
                  key: MINIO_ROOT_PASSWORD
            - name: TZ
              value: "Asia/Shanghai"
          volumeMounts:
            - mountPath: /data
              name: minio-data
            - mountPath: /root/.minio
              name: minio-config
          resources:
            limits:
              cpu: "1"
              memory: "2Gi"
            requests:
              cpu: "0.5"
              memory: "1Gi"
      volumes:
        - name: minio-data
          persistentVolumeClaim:
            claimName: minio-pvc
        - name: minio-config
          persistentVolumeClaim:
            claimName: minio-config-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: minio
spec:
  selector:
    app: minio
  ports:
    - name: http
      protocol: TCP
      port: 9000
      targetPort: 9000
      nodePort: 30087  # 外部访问 Minio 的 HTTP 端口
    - name: console
      protocol: TCP
      port: 9001
      targetPort: 9001
      nodePort: 30088  # 外部访问 Minio 管理控制台的端口
  type: NodePort  # 使用 NodePort 类型
  1. 创建 PersistentVolume 和 PersistentVolumeClaim(PV/PVC)
    minio-pv.yaml - 数据存储持久卷
apiVersion: v1
kind: PersistentVolume
metadata:
  name: minio-pv
spec:
  capacity:
    storage: 100Gi  # 根据需要调整存储大小
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/minio/data  # 请根据您的集群配置选择合适的存储类型(如 NFS, EBS, 或其他)
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minio-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi  # 请求存储空间

minio-config-pv.yaml - 配置存储持久卷

apiVersion: v1
kind: PersistentVolume
metadata:
  name: minio-config-pv
spec:
  capacity:
    storage: 10Gi  # 配置文件存储,可以根据需要调整
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/minio/config  # 配置文件的存储路径
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minio-config-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi  # 配置文件请求存储空间

  1. 创建 minio-secrets.yaml - 存储敏感信息
    为了保护 MINIO_ROOT_PASSWORD,建议将密码存储在 Kubernetes Secret 中:
apiVersion: v1
kind: Secret
metadata:
  name: minio-secrets
type: Opaque
data:
  MINIO_ROOT_PASSWORD: <base64_encoded_password>  # 请将密码转为 base64 编码后填入此处

你可以通过以下命令将密码转换为 Base64 编码:

echo -n 'Y6HYraaphfZ9k8Lv' | base64
  1. 应用配置
    通过以下命令将上述文件部署到 Kubernetes 集群:
kubectl apply -f minio-secrets.yaml
kubectl apply -f minio-pv.yaml
kubectl apply -f minio-config-pv.yaml
kubectl apply -f minio-deployment.yaml

访问 Minio 服务
如果您使用的是 LoadBalancer 类型的 Service,Kubernetes 会分配一个外部 IP 地址。您可以通过以下命令检查服务的外部 IP 地址:

kubectl get svc minio

  1. 清理
    如果您需要删除部署和相关资源,可以运行以下命令
kubectl delete -f minio-secrets.yaml
kubectl delete -f minio-pv.yaml
kubectl delete -f minio-config-pv.yaml
kubectl delete -f minio-deployment.yaml

访问 Minio 服务:
通过任何节点的 IP 地址和指定的 NodePort 端口进行访问:
Minio 服务:<Node_IP>:30087
Minio 控制台:<Node_IP>:30088
您就能够通过外部端口访问 Minio 服务和控制台了!
如何使用k8s安装minio呢-LMLPHP

12-06 12:46