通过helm在k8s上安装minio

本文详细描述了如何在Kubernetes集群中通过Helm安装Minio,并配置NodePort服务以实现外网访问。同时,还介绍了在Docker环境中直接部署Minio的方法,包括设置访问密钥和权限配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 helm安装minio

1.1 下载minio

添加仓库

helm repo add bitnami https://charts.bitnami.com/bitnami

将minio拉取下来

helm pull bitnami/minio --version 版本号

解压到本地开始编辑配置文件

tar -zxf minio-xxx.tgz
[root@k8s-master01 minio]# vi values.yaml

1.2 修改values.yaml配置

auth:
  rootUser: admin   //root用户
  rootPassword: "密码" /root密码
statefulset:
  replicaCount: 1  //副本
service:
  type: NodePort  //指定外网访问服务类型

1.3 开始安装minio

[root@k8s-master01 minio]# helm install minio ../minio -n newlandp

1.4 查看安装情况

[root@k8s-master01 minio]# kubectl get pod  -n newlandp   
NAME                     READY   STATUS    RESTARTS   AGE
minio-5d684b8858-8vzn5   1/1     Running   0          18m
postgresql-0             1/1     Running   0          49d
[root@k8s-master01 minio]# kubectl get svc  -n newlandp
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                         AGE
minio           NodePort    10.0.0.149   <none>        9000:32077/TCP,9001:32373/TCP   18m
postgresql      NodePort    10.0.0.154   <none>        5432:32109/TCP                  49d
postgresql-hl   ClusterIP   None         <none>        5432/TCP                        49d

 2 如果只是docker环境

1 创建本地目录

mkdir -p /usr/local/minio/config
mkdir -p /usr/local/minio/data

2 镜像下载

docker pull minio/minio:RELEASE.2023-07-21T21-12-44Z.fips

3 运行

docker run -p 9080:9080 -p 9090:9090 \
     --net=host \
     --name minio \
     -d --restart=always \
     -e "MINIO_ROOT_USER=minioadmin" \
     -e "MINIO_ROOT_PASSWORD=liu22222" \
     -v /usr/local/minio/data:/data \
     -v /usr/local/minio/config:/root/.minio \
     minio/minio:RELEASE.2023-07-21T21-12-44Z.fips server \
     /data --console-address ":9090" -address ":9080"

-p 9000:9000:将容器内部的 9000 端口映射到主机的 9000 端口,用于访问 MinIO 对象存储服务器。
-p 9090:9090:将容器内部的 9090 端口映射到主机的 9090 端口,用于访问 MinIO 管理界面。
--net=host:将容器与主机共享网络命名空间,这样容器内部的网络设置可以直接应用于主机。
--name minio:给容器指定一个名称为 “minio”。
-d --restart=always:将容器设置为以守护进程方式运行,并在重启时自动重启容器。
-e "MINIO_ROOT_USER=minioadmin" -e "MINIO_ROOT_PASSWORD=minioadmin":设置 MinIO 的访问密钥和秘密密钥。在这个例子中,访问密钥设置为 “minioadmin”,秘密密钥也设置为 “minioadmin”。
-v /home/minio/data:/data:将主机的 /home/minio/data 目录挂载到容器的 /data 目录,用于持久化存储 MinIO 的数据。
-v /home/minio/config:/root/.minio:将主机的 /home/minio/config 目录挂载到容器的 /root/.minio 目录,用于存储 MinIO 的配置文件。
minio/minio server /data --console-address ":9090" -address ":9000":以 /data 目录作为存储路径,在主机上启动 MinIO 服务器。--console-address 用于指定管理界面的访问地址,-address 则指定 MinIO 对象存储的访问地址。

3 配置minio浏览器访问设置

test为桶名称

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "AWS": [
                   "*"
               ]
           },
           "Action": [
               "s3:GetBucketLocation",
               "s3:ListBucket"
           ],
           "Resource": [
               "arn:aws:s3:::test"
           ]
       },
       {
           "Effect": "Allow",
           "Principal": {
               "AWS": [
                   "*"
               ]
           },
           "Action": [
               "s3:GetObject"
           ],
           "Resource": [
               "arn:aws:s3:::test/*"
           ]
       }
   ]
}
### MinIOKubernetes 上的最佳实践 在 Kubernetes (K8S) 中部署 MinIO 是一种高效的方式,可以利用其分布式特性以及 K8S 的自动化管理能力。以下是基于最佳实践的配置方法和 YAML 文件示例。 #### 使用 MinIO Operator 部署 MinIO 提供了一个名为 **MinIO Operator** 的工具,用于简化 MinIO 集群的创建、管理和扩展过程。Operator 可以动态调整存储容量并提供高可用性支持[^2]。 ##### 步骤概述 1. 安装 MinIO Operator。 2. 创建 Tenant(租户),即实际的 MinIO 存储实例。 3. 配置持久化存储卷(Persistent Volumes, PV)和访问策略。 --- #### 1. 安装 MinIO Operator 可以通过 Helm 或者直接应用 YAML 文件安装 MinIO Operator: ```yaml apiVersion: v1 kind: Namespace metadata: name: minio-operator --- apiVersion: helm.min.io/v1alpha1 kind: MinIOOperator metadata: namespace: minio-operator spec: image: quay.io/minio/operator:v5.0.9 # 替换为最新版本号 kubeconfigSecretName: "" # 如果需要自定义 kubeconfig,则填写 Secret 名称 ``` 上述 YAML 将会创建一个命名空间 `minio-operator` 并启动 MinIO Operator 实例。 --- #### 2. 创建 MinIO 租户 (Tenant) 一旦 Operator 成功运行,就可以通过 CRD(Custom Resource Definition)方式创建一个新的 MinIO 存储集群。 以下是一个典型的 MinIO Tenant 配置文件示例: ```yaml apiVersion: minio.min.io/v2 kind: Tenant metadata: name: example-minio namespace: default spec: pools: - servers: 4 # 节点数量 volumesPerServer: 2 # 每节点挂载的数据盘数量 volumeClaimTemplates: # PersistentVolumeClaims 模板 - metadata: name: data spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi # 单磁盘大小 certificate: {} # 自动生成证书选项 consoleResources: cpu: "1" memory: "1G" mode: distributed # 分布式模式 ``` 此配置将会创建一个由 4 个节点组成的分布式 MinIO 集群,每个节点有两块数据盘,每块磁盘分配 10GB 空间[^1]。 --- #### 3. 访问 MinIO 控制台和服务端口 默认情况下,MinIO Operator 会在 Kubernetes 集群内部暴露两个服务地址: - **API Service**: 用于客户端连接到 S3 API 接口。 - **Console Service**: Web UI 控制面板。 如果希望外部能够访问这些服务,可以在对应的 Service 对象中设置 `type: LoadBalancer` 或使用 Ingress 进行代理。 例如,修改控制台的服务类型以便公网访问: ```yaml apiVersion: v1 kind: Service metadata: name: example-minio-console labels: app.kubernetes.io/name: minio.example.com spec: type: LoadBalancer # 设置为 LoadBalancer 类型 ports: - port: 9443 targetPort: 9443 protocol: TCP selector: tenant: example-minio ``` --- #### 注意事项 - 确保 Kubernetes 集群中的所有节点都满足 MinIO 的硬件要求,特别是 CPU 和内存资源。 - 数据盘应尽可能分布在不同的物理设备上,以提高性能和可靠性。 - 如果计划长期保存大量数据,请考虑备份机制或者启用多区域复制功能。 --- ### 示例总结 以上展示了如何借助 MinIO Operator 来快速构建一个高度可扩展的对象存储解决方案,并提供了完整的 YAML 配置模板作为参考。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流光影下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值