话不多说,直接干货。
创建 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 类型
- 创建 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 # 配置文件请求存储空间
- 创建 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
- 应用配置
通过以下命令将上述文件部署到 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
- 清理
如果您需要删除部署和相关资源,可以运行以下命令
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 服务和控制台了!