复制保存成 minio-final.yaml 以后随时能用

# 密码配置:K8s 用来存敏感信息(账号密码),不明文显示
apiVersion: v1
kind: Secret  # Secret 类型:专门存密码、密钥
metadata:
  name: minio-secret  # 名字,后面 Pod 会引用
data:
  accesskey: YWRtaW4=  # 账号 admin 的 base64 编码
  secretkey: TWluaW9AMjAyNiE=  # 密码 Minio@2026! 的 base64 编码

---
# 核心:MinIO 有状态应用(必须用 StatefulSet,不能用 Deployment)
apiVersion: apps/v1
kind: StatefulSet  # 有状态应用控制器:固定 Pod 名字 + 固定存储
metadata:
  name: minio  # 服务名
spec:
  serviceName: minio-hl  # 绑定内部无头服务,用于节点通信
  replicas: 4  # 启动 4 个 MinIO 节点 → 分布式集群
  selector:
    matchLabels:
      app: minio  # 标签匹配,管理下面的 Pod

  template:
    metadata:
      labels:
        app: minio  # 给 Pod 打标签
    spec:
      # 存储配置:直接用节点本地目录 /data/minio,不需要 PV/PVC
      volumes:
      - name: data
        hostPath:
          path: /data/minio  # 节点上的真实目录
          type: DirectoryOrCreate  # 不存在就自动创建

      containers:
      - name: minio  # 容器名
        image: quay.io/minio/minio:latest  # 国内可拉取的镜像(解决超时问题)
        
        # MinIO 启动命令
        args:
        - server  # 启动 MinIO 服务
        - --console-address  # 指定 Web 控制台端口
        - ":9001"  # 控制台端口 9001
        - http://minio-{0...3}.minio-hl.default.svc.cluster.local/data  # 4 节点分布式集群地址

        # 环境变量:从 Secret 读取账号密码
        env:
        - name: MINIO_ROOT_USER
          valueFrom:
            secretKeyRef:
              name: minio-secret  # 引用上面的 Secret
              key: accesskey
        - name: MINIO_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: minio-secret
              key: secretkey

        # 目录挂载:把节点的 /data/minio 挂到容器 /data
        volumeMounts:
        - name: data
          mountPath: /data

---
# 无头服务:给 MinIO 节点之间通信用
apiVersion: v1
kind: Service
metadata:
  name: minio-hl  # 服务名
spec:
  clusterIP: None  # 无头服务(Headless):固定解析 Pod IP
  selector:
    app: minio  # 绑定所有 minio Pod

---
# Web 控制台服务:让你浏览器访问界面
apiVersion: v1
kind: Service
metadata:
  name: minio-console
spec:
  type: NodePort  # NodePort:暴露端口给外部访问
  selector:
    app: minio
  ports:
  - port: 9001  # 容器内部控制台端口
    targetPort: 9001
    nodePort: 30001  # 外部访问端口 → 节点IP:30001

---
# API 服务:给 mc 命令、程序上传文件用
apiVersion: v1
kind: Service
metadata:
  name: minio
spec:
  type: NodePort
  selector:
    app: minio
  ports:
  - port: 9000  # MinIO 数据接口
    targetPort: 9000
    nodePort: 30000  # 外部访问端口 → 节点IP:30000

文章作者: 楚少爱看雪
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 楚少爱看雪
学习 Study
喜欢就支持一下吧