misterli's Blog.

在k8s上部署支持多租户的minio

字数统计: 5k阅读时长: 21 min
2021/09/01

简介

img

MinIO 是一种高性能对象存储解决方案,原生支持 Kubernetes 部署。MinIO 提供与 Amazon Web Services S3 兼容的 API,并支持所有核心 S3 功能。MinIO 是在GNU Affero 通用公共许可证 v3.0下发布的。

MinIO 的不同之处在于,它从一开始就被设计为私有/混合云对象存储。因MinIO 是专门为服务于对象而构建的,所以单层架构可以实现所有必要的功能。它是一个同时具有高性能、可扩展性和轻量级的云原生对象服务器。

架构图

image-20210831170255043

特性

纠删码

MinIO 使用以汇编代码编写的每个对象内联擦除编码来保护数据,以提供尽可能高的性能。MinIO 使用 Reed-Solomon 代码将对象条带化为具有用户可配置冗余级别的数据和奇偶校验块。MinIO 的 Erasure Coding 在对象级别执行修复,可以独立修复多个对象。

在 N/2 的最大奇偶校验下,MinIO 的实现可以确保在部署中仅使用 ((N/2)+1) 个操作驱动器进行不间断的读写操作。例如,在 12 个驱动器的设置中,MinIO 将对象分片到 6 个数据和 6 个奇偶校验驱动器,并且可以可靠地写入新对象或重建现有对象,而部署中仅剩下 7 个驱动器。详细介绍可以参考 https://docs.min.io/minio/baremetal/concepts/erasure-coding.html

image-20210831170803346

Bitrot 保护

静默数据损坏或 bitrot 是磁盘驱动器面临的严重问题,导致数据在用户不知情的情况下损坏。原因是多方面的(驱动器老化、电流峰值、磁盘固件中的错误、幻像写入、读取/写入方向错误、驱动程序错误、意外覆盖),但结果是一样的 - 数据受损。

MinIO 对 HighwayHash 算法的优化实现确保它永远不会读取损坏的数据 - 它即时捕获和修复损坏的对象。通过在 READ 上计算散列并在从应用程序、网络到内存/驱动器的 WRITE 上对其进行验证来确保端到端的完整性。该实现专为速度而设计,可以在 Intel CPU 的单核上实现超过 10 GB/秒的散列速度。

image-20210831171039426

身份管理

MinIO 支持与 OpenID 连接兼容提供商以及关键的外部 IDP 供应商集成。

image-20210831171212298

数据加密

MinIO 支持多种复杂的服务器端加密方案来保护数据——无论数据在哪里。MinIO 的方法以可忽略的性能开销确保机密性、完整性和真实性。使用 AES-256-GCM、ChaCha20-Poly1305 和 AES-CBC 支持服务器端和客户端加密。

image-20210831171304852

连续复制

MinIO 的持续复制专为大规模、跨数据中心部署而设计。通过利用 Lambda 计算通知和对象元数据,它可以高效快速地计算增量。Lambda 通知确保更改立即传播,而不是传统的批处理模式。

image-20210831171444574

K8s 上部署minio

minio官方推荐使用minio-operator部署多租户的minio系统。

每个 MinIO Tenant 代表 Kubernetes 集群中的一个独立的 MinIO Object Store。下图描述了部署到 Kubernetes 中的 MinIO Tenant 的架构:

[租户架构

MinIO 提供了多种访问和管理 MinIO Tenant 的方法

MinIO Console提供了一个图形用户界面 (GUI) 用于与 MinIO 租户交互。MinIO Operator 默认为每个租户安装和配置控制台。

console-dashboard.png

MinIO Tenants 的管理员可以通过控制台执行各种任务,包括用户创建、策略配置和存储桶复制。控制台还提供租户运行状况、使用情况和修复状态的高级视图

安装前的要求

Kubernetes 版本 1.19.0

  • 从 v4.0.0 开始,MinIO Operator 和 MinIO Kubernetes Plugin 需要 Kubernetes 1.19.0 及更高版本。该Kubernetes基础设施kubectlCLI工具必须具备的1.19.0+相同的版本。
  • 在 v4.0.0 之前,MinIO Operator 和 Plugin 需要 Kubernetes 1.17.0。您 必须将 Kubernetes 基础架构升级到 1.19.0 或更高版本才能使用 MinIO Operator 或 Plugin v4.0.0 或更高版本。

Kubernetes TLS 证书 API

MinIO Operator 自动生成 TLS 证书签名请求 (CSR) 并使用 Kubernetes certificates.k8s.io TLS 证书管理 API创建签名的 TLS 证书。

因此 MinIO Operator要求Kubernetes kube-controller-manager配置包括以下 配置设置

  • --cluster-signing-key-file - 指定用于签署集群范围证书的 PEM 编码的 RSA 或 ECDSA 私钥。
  • --cluster-signing-cert-file - 指定用于颁发集群范围证书的 PEM 编码的 x.509 证书颁发机构证书。

如果 Kubernetes 集群未配置为响应生成的 CSR,则 Operator 无法完成初始化。默认情况下,某些 Kubernetes 提供程序不指定这些配置值。

要验证是否kube-controller-manager具有所需的设置,请使用以下命令。替换$CLUSTER-NAME为 Kubernetes 集群的名称:

1
2
kubectl get pod kube-controller-manager-$CLUSTERNAME-control-plane \
-n kube-system -o yaml

确认输出包含突出显示的行。上面示例命令的输出可能与终端中的输出不同:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
spec:
containers:
- command:
- kube-controller-manager
- --allocate-node-cidrs=true
- --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
- --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
- --bind-address=127.0.0.1
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --cluster-cidr=10.244.0.0/16
- --cluster-name=my-cluster-name
- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
- --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
...

证书的额外说明

MinIO Operator 使用指定的证书颁发机构 (CA) 为所有 MinIO Tenant pod 自动生成 TLS 证书。Kubernetes 集群外部的客户端必须信任 Kubernetes 集群 CA 才能连接到 MinIO Operator 或 MinIO Tenants。

不能信任 Kubernetes 集群 CA 的客户端可以尝试禁用连接 MinIO Operator 或 MinIO Tenant 的 TLS 验证。

或者,您可以生成由已知且受信任的 CA 签署的 x.509 TLS 证书,并将这些证书传递给 MinIO 租户

安装minio operator

MinIO Operator 扩展了 Kubernetes API 以支持将 MinIO 特定资源部署为 Kubernetes 集群中的租户。

MinIOkubectl minio插件封装了 Operator,为通过kubectl命令行工具在 Kubernetes 集群中部署和管理 MinIO Tenants 提供了一个简化的界面 。

安装minio operator 我们可以选择helm 或者使用官方提供的kubectl minio 插件的方式,这里我们使用kubectl minio 插件的方式安装

下载kubectl minio插件

1
2
3
wget https://github.com/minio/operator/releases/download/v4.2.2/kubectl-minio_4.2.2_linux_amd64 -O kubectl-minio
chmod +x kubectl-minio
mv kubectl-minio /usr/local/bin/

我们下载后可以查看一下信息

1
2
[root@master-01 minio]# kubectl minio version
v4.2.2

初始化 MinIO Kubernetes Operator

运行命令初始化 MinIO Operator:kubectl minio init

1
kubectl minio init

该命令使用以下默认设置初始化 MinIO Operator:

这里我们使用默认的参数进行初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@master-01 minio]# kubectl minio init 
namespace/minio-operator created
serviceaccount/minio-operator created
clusterrole.rbac.authorization.k8s.io/minio-operator-role created
clusterrolebinding.rbac.authorization.k8s.io/minio-operator-binding created
customresourcedefinition.apiextensions.k8s.io/tenants.minio.min.io created
service/operator created
deployment.apps/minio-operator created
serviceaccount/console-sa created
clusterrole.rbac.authorization.k8s.io/console-sa-role created
clusterrolebinding.rbac.authorization.k8s.io/console-sa-binding created
configmap/console-env created
service/console created
deployment.apps/console created
-----------------

To open Operator UI, start a port forward using this command:

kubectl minio proxy -n minio-operator

------------------

验证安装

验证安装我们可以使用kubectl get all --namespace minio-operator命令,如果您使用自定义命名空间初始化 Operator,请替换 minio-operator为该命名空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@master-01 minio]# kubectl get all --namespace minio-operator
NAME READY STATUS RESTARTS AGE
pod/console-7c855c9789-rkgwt 1/1 Running 0 2m18s
pod/minio-operator-66849f98b7-ltx8z 1/1 Running 0 2m18s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/console ClusterIP 10.98.77.37 <none> 9090/TCP,9443/TCP 2m18s
service/operator ClusterIP 10.96.26.6 <none> 4222/TCP,4233/TCP 2m19s

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/console 1/1 1 1 2m18s
deployment.apps/minio-operator 1/1 1 1 2m19s

NAME DESIRED CURRENT READY AGE
replicaset.apps/console-7c855c9789 1 1 1 2m18s
replicaset.apps/minio-operator-66849f98b7 1 1 1 2m19s

部署一个minio 租户

部署一个minio租户我们有多种方式,这里先介绍使用控制台和kubectl minio 插件的方式部署。

插件部署

为租户创建名称空间

首先创建一个名为minio的namespace,后续我们将minio租户部署在这个namespace中

1
kubectl create ns minio 

创建minio租户

我们可以使用kubectl minio tenant create创建minio租户,我们使用如下命令创建一个一个节点的minio租户,4个存储,总容量为4Gi

1
kubectl minio tenant create  gitlab-cache-minio  --servers 1 --volumes 4 --capacity 4Gi --storage-class  local-path --namespace minio

参数说明:

gitlab-cache-minio 命令创建的 MinIO 租户的名称。
--servers minio要跨 Kubernetes 集群部署的服务器数量。
--volumes 集群中的卷数。通过将确定每个服务器的卷数通过。kubectl miniovolumes``servers
--capacity 集群的总容量。确定每个体积的通过划分容量通过。kubectl miniocapacity``volumes
--storage-class StorageClass创建每个 PVC 时要使用的 Kubernetes 。此示例使用 MinIO DirectCSI 存储类。
--namespace 用于部署 MinIO 租户的 Kubernetes 命名空间。

成功后,该命令将返回以下内容:

  • 租户的管理用户名和密码。将这些凭据存储在安全位置,例如受密码保护的密钥管理器。MinIO不再显示这些凭据。
  • 为连接到 MinIO 控制台而创建的服务。控制台支持对租户的管理操作,例如配置身份和访问管理 (IAM) 和存储桶配置。
  • 为连接到 MinIO 租户而创建的服务。应用程序应使用此服务对 MinIO 租户执行操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@master-01 ~]# kubectl minio tenant create  gitlab-cache-minio  --servers 1 --volumes 4 --capacity 4Gi --storage-class  local-path --namespace minio

Tenant 'gitlab-cache-minio' created in 'minio' Namespace

Username: admin
Password: 0e582fb9-2f09-42cd-xxxxxxxx
Note: Copy the credentials to a secure location. MinIO will not display these again.

+-------------+----------------------------+-----------+--------------+--------------+
| APPLICATION | SERVICE NAME | NAMESPACE | SERVICE TYPE | SERVICE PORT |
+-------------+----------------------------+-----------+--------------+--------------+
| MinIO | minio | minio | ClusterIP | 443 |
| Console | gitlab-cache-minio-console | minio | ClusterIP | 9443 |
+-------------+----------------------------+-----------+--------------+--------------+

访问服务

我们可以观察下部署哪些东西

1
2
3
4
5
6
7
8
9
10
11
[root@master-01 ~]# kubectl get all -n minio
NAME READY STATUS RESTARTS AGE
pod/gitlab-cache-minio-ss-0-0 1/1 Running 0 2m1s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/gitlab-cache-minio-console ClusterIP 10.104.142.44 <none> 9443/TCP 2m1s
service/gitlab-cache-minio-hl ClusterIP None <none> 9000/TCP 2m1s
service/minio ClusterIP 10.109.75.11 <none> 443/TCP 2m1s

NAME READY AGE
statefulset.apps/gitlab-cache-minio-ss-0 1/1 2m1s
  • service/minio是对应minio的服务,我们可以使用这个service访问这个minio 租户提供对象存储能力
  • service/gitlab-cache-minio-console这个对应的是这个minio租户的console服务,我们可以使用这个service访问这个minio 租户的console控制台
  • service/gitlab-cache-minio-hl 这个是个headless服务,用于pod间通讯

默认情况下,每个服务仅在 Kubernetes 集群中可见。部署在集群内的应用程序可以使用 CLUSTER-IP. 对于 Kubernetes 集群外部的应用程序,您必须配置适当的网络规则以公开对服务的访问。Kubernetes 提供了多个选项来配置对服务的外部访问,比如可以使用ingress或者service 配置为nodeport类型。

简单测试时我们可以使用kubectl port-forward将服务代理到本地

1
2
kubectl port-forward service/minio 443:443
kubectl port-forward service/minio-tenant-1-console 9443:9443

注意

上述部署时--servers 1仅部署了一个服务节点,生产环境为了保证高可用,最低要使用四个服务节点!!!!

既然是多租户,我们可以很方便的在多个namespace中部署minio ,例如我们在test这个namespace下在部署一个minio租户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@master-01 ~]# kubectl minio tenant create minio-s3  --servers 1 --volumes 4 --capacity 4Gi --storage-class  local-path --namespace test

Tenant 'minio-s3' created in 'test' Namespace

Username: admin
Password: bfba804b-002f-46f7-86f6-39991c001b74
Note: Copy the credentials to a secure location. MinIO will not display these again.

+-------------+------------------+-----------+--------------+--------------+
| APPLICATION | SERVICE NAME | NAMESPACE | SERVICE TYPE | SERVICE PORT |
+-------------+------------------+-----------+--------------+--------------+
| MinIO | minio | test | ClusterIP | 443 |
| Console | minio-s3-console | test | ClusterIP | 9443 |
+-------------+------------------+-----------+--------------+--------------+
[root@master-01 ~]# kubectl -n test get pod
NAME READY STATUS RESTARTS AGE
minio-s3-ss-0-0 1/1 Running 0 17s

Kubectl-minio插件常用命令

我们使用kubectl minio插件部署服务可以通过下面命令删除

删除operator

kubectl minio delete [options]

选项:

  • --namespace=minio-operator

删除 MinIO Operator Deployment 以及 MinIO Tenant CRD、Service account、Cluster Role 和 Cluster Role Binding。它还删除所有租户实例。

注意:删除时需要我们手动输入y确认删除操作

列出租户

命令 kubectl minio tenant list

示例:

1
2
3
4
5
6
[root@master-01 ~]# kubectl minio tenant list

Tenant 'gitlab-cache-minio', Namespace 'minio', Total capacity 4.0 GiB

Current status: Initialized
MinIO version: minio/minio:RELEASE.2021-08-25T00-41-18Z
查看租户信息

命令: kubectl minio tenant info TENANT_NAME [options]

选项:

  • --namespace=minio

列出给定 MinIO 租户中所有现有的 MinIO 池。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@master-01 ~]# kubectl minio tenant info  gitlab-cache-minio -n minio 

Tenant 'gitlab-cache-minio', Namespace 'minio', Total capacity 4.0 GiB

Current status: Initialized
MinIO version: minio/minio:RELEASE.2021-08-25T00-41-18Z
MinIO service: minio/ClusterIP (port 443)

Console service: gitlab-cache-minio-console/ClusterIP (port 9443)

+------+---------+--------------------+---------------------+
| POOL | SERVERS | VOLUMES PER SERVER | CAPACITY PER VOLUME |
+------+---------+--------------------+---------------------+
| 0 | 1 | 4 | 1Gi |
+------+---------+--------------------+---------------------+

升级镜像

命令: kubectl minio tenant upgrade TENANT_NAME --image IMAGE_TAG [options]

为给定的 MinIO 租户升级 MinIO Docker 镜像。

例子: kubectl minio tenant upgrade tenant1 --image minio/minio:RELEASE.2021-08-25T00-41-18Z

选项:

  • --namespace=minio
  • --output
移除租户

命令: kubectl minio tenant delete TENANT_NAME [options]

删除现有的 MinIO 租户。

选项:

  • --namespace=minio

注意:删除时需要我们手动输入y确认删除操作

示例

1
2
3
4
5
6
[root@master-01 ~]# kubectl minio  tenant delete  gitlab-cache-minio --namespace minio 

This will delete the Tenant gitlab-cache-minio and ALL its data. Do you want to proceed?: y
Deleting MinIO Tenant gitlab-cache-minio
Deleting MinIO Tenant Credentials Secret gitlab-cache-minio-creds-secret

控制台部署

部署前说一下,控制台部署最低需要部署四个minio server端,最低需要四个节点,如果节点不足,仅测试一下minio可以使用上面的使用插件部署。

我们首先为控制台创建一个访问入口,这里我使用的ingress 控制器是traefik ,如果使用的是ingress-nginx,请自行修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: minio
namespace: minio-operator
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`minio.lishuai.fun`)
middlewares:
- name: redirect-https
namespace: default
services:
- kind: Service
name: console
port: 9090
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: minio-https
namespace: minio-operator
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`minio.lishuai.fun`)
services:
- kind: Service
name: console
port: 9090
tls:
certResolver: myresolver

部署之后我们访问minio.lishuai.fun

image-20210831112031928

operator的控制台默认是需要使用JWT登陆,我们可以通过kubectl minio proxy如下获取JWT

1
2
3
4
5
6
7
8
9
[root@master-01 minio]# kubectl minio proxy 
Starting port forward of the Console UI.

To connect open a browser and go to http://localhost:9090

Current JWT to login: eyJhbGciOiJSUzI1NiIsImtpZCI6InpDXzRXT3o1VVM0dlVzRmlqdUI1NWE2NE1neUMtSVFuV1NnaVNONkh0YzAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2****8*********************************************************************Isr8_FnNWfC9V6s1t9Zeyxm9xcG9N29g7jz0jum5YcBk_xmRObKbeAiBFrptbJdVtuGcA8x2WZsmCjG3BtvJ8Wc_xDkss58Lv8guV91LNsHn9AzMvXR15EusF_IW6q3ffGCrR0onYrXd-TqyCFvYrEQyBZtGONVLhLbKXI6aSmokqJaB5x7wW5qk1eNHEWC0r0fZDRgLqsap1k4ssRLCkyk-dgQ

Forwarding from 0.0.0.0:9090 -> 9090

从输出上看官方应该不太建议把operator console 使用代理映射到公网上,而是使用类似kubectl proxy 的方式代理到本地的使用,operator console可以管理所有的minio租户,暴露到公网上会有一定安全性风险,这个我们实际使用中应该根据自己实际情况考虑.

我们复制页面上的token登陆进控制台

image-20210831112822919

创建租户

点击create tenant我们即可进入创建租户页面

image-20210831115130404

注意:

  • 指定的命名空间必须包含任何现有MinIO租户,可以考虑为 MinIO 租户创建一个新的命名空间。
  • 集群中需要有可使用的存储类

这里我们勾选了高级配置,单机下一步进入高级配置的页面

配置租户

这一步只有我们在勾选高级配置才可见

image-20210831153122331

配置Pod Affinity

Pod Affinity步骤包含与调度 MinIO 租户Pod相关的配置设置,仅在勾选高级模式时可见

默认的Pod Anti-Affinity确保没有两个 MinIO Pod 部署到同一个工作节点

image-20210831153409241

配置身份认证提供者

身份提供者步骤包含与 MinIO身份和访问管理相关的配置设置,仅在勾选高级模式时可见

默认的Built-In是 MinIO 内部身份提供者提供身份认证,还可以将 OpenID ConnectActive Directory 服务配置为外部身份管理器

image-20210831153512572

配置tls

该步骤包含与MinIO传输层安全(TLS)的配置,仅在勾选高级模式可见。

MinIO Operator 使用 Kubernetes certificates.k8s.io TLS 证书管理 API自动生成 TLS 证书。您可以通过切换Enable AutoCert来禁用此行为

image-20210831153752437

可以提供一个或多个自定义证书供 MinIO 租户使用。MinIO 支持服务器名称指示 (SNI) 支持,用于根据客户端请求中指定的主机名选择要响应的 TLS 证书。Operator 会自动将指定的证书分发到租户中的每个服务器 Pod。

禁用AutoCert 指定没有 自定义证书会在没有 TLS 的情况下部署 MinIO 租户。在部署没有 TLS 的租户之前,请考虑允许不安全流量的安全风险。

配置对象加密

加密步骤包含与MinIO 服务器端对象加密相关的配置,仅在勾选高级模式可见。

image-20210831153851832

操作员控制台支持以下外部密钥管理系统 (KMS):

  • Hashicorp Vault
  • Thales CipherTrust (formerly Gemalto KeySecure)
  • AWS KMS
  • GCP Secrets Manager

配置minio租户的容量规模

该步骤包含与minio租户的容量相关的配置,仅在勾选高级模式时可见。

image-20210831154113336

我们可以在该页面合理的配置自己想要部署的minio租户的存储规模,比如服务端数量,每个服务端使用的存储的数量,存储的容量,纠删码奇偶校验设置等,我们可以使用 MinIO 纠删码计算器来帮助指导配置 MinIO 租户。

image-20210831154454078

预览配置摘要

该步骤可以预览我们上述定义配置的摘要

image-20210831154537683

单击创建以开始租户创建过程,单击Create 后,操作员控制台会显示 MinIO 租户的根凭据。

注意:凭据信息仅显示一次,建议下载妥善保存

查看租户详情

创建租户后我们在控制台点击创建的minio租户查看详情

image-20210831161950590

image-20210831161317384

我们还可以点击manage tenant进入这个minio租户的控制台

image-20210831162033504

在这个控制台中我们可以对这个minio租户执行日常管理操作,比如创建用户,浏览对象等。

验证使用minio

我们可以使用官方提供的客户端命令行工具mc 来访问minio

1
2
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc

添加minio

我们我们这里是在集群的node节点上访问,首先使用kubectl 确认下mino 的service ip

1
2
3
4
5
[root@master-01 ~]# kubectl get svc -n minio 
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gitlab-cache-minio-console ClusterIP 10.104.142.44 <none> 9443/TCP 48m
gitlab-cache-minio-hl ClusterIP None <none> 9000/TCP 48m
minio ClusterIP 10.109.75.11 <none> 443/TCP 48m

这里我们可以看到minio的service ip 为10.109.75.11,使用如下命令将这个minio添加到配置中

1
2
3
4
[root@master-01 ~]# bash +o history
[root@master-01 ~]# mc --insecure alias set myminio https://10.109.75.11 admin 0e582fb9-xxxxxxxxx76f-25cc1c2aece0
Added `myminio` successfully.
[root@master-01 ~]# bash -o history

注意:

  • 使用bash +o history 是为了避免敏感信息被保存的命令的历史记录里
  • 默认创建租户时使用了 Kubernetes certificates.k8s.io TLS 证书管理 API自动生成 TLS 证书,这是个私有ca签发的证书,所以为了正常访问这里使用--insecure禁用 TLS/SSL 证书验证。允许 TLS 连接到证书无效的服务器

我们使用控制台创建时也可以选择禁用AutoCert使用http协议访问,使用kubectl minio插件配置的可以创建后在控制台修改,修改后服务会重新启动,之后就可以使用http协议访问里

image-20210831165318735

这里我们将calico-3.9.2.yaml文件上传到minio的test目录下

1
2
3
4
root@master-01 ~]# mc --insecure  ls myminio
[2021-08-30 15:35:26 CST] 0B test/
[root@master-01 ~]# mc --insecure cp calico-3.9.2.yaml myminio/test
calico-3.9.2.yaml: 20.16 KiB / 20.16 KiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 1.09 MiB/s 0s

我们可以登录控制台在对象浏览器里看到这个文件已经成功出现在test目录下

image-20210831165806548

CATALOG
  1. 1. 简介
    1. 1.1. 架构图
    2. 1.2. 特性
      1. 1.2.1. 纠删码
      2. 1.2.2. Bitrot 保护
      3. 1.2.3. 身份管理
      4. 1.2.4. 数据加密
      5. 1.2.5. 连续复制
  2. 2. K8s 上部署minio
  3. 3. 安装前的要求
    1. 3.1. Kubernetes 版本 1.19.0
    2. 3.2. Kubernetes TLS 证书 API
      1. 3.2.1. 证书的额外说明
  4. 4. 安装minio operator
    1. 4.1. 下载kubectl minio插件
    2. 4.2. 初始化 MinIO Kubernetes Operator
    3. 4.3. 验证安装
  5. 5. 部署一个minio 租户
    1. 5.1. 插件部署
      1. 5.1.1. 为租户创建名称空间
      2. 5.1.2. 创建minio租户
      3. 5.1.3. 访问服务
      4. 5.1.4. 注意
      5. 5.1.5. Kubectl-minio插件常用命令
        1. 5.1.5.1. 删除operator
        2. 5.1.5.2. 列出租户
        3. 5.1.5.3. 查看租户信息
        4. 5.1.5.4. 升级镜像
        5. 5.1.5.5. 移除租户
    2. 5.2. 控制台部署
      1. 5.2.1. 创建租户
      2. 5.2.2. 配置租户
      3. 5.2.3. 配置Pod Affinity
      4. 5.2.4. 配置身份认证提供者
      5. 5.2.5. 配置tls
      6. 5.2.6. 配置对象加密
      7. 5.2.7. 配置minio租户的容量规模
      8. 5.2.8. 预览配置摘要
    3. 5.3. 查看租户详情
  6. 6. 验证使用minio
    1. 6.1. 添加minio