MinIO是用于高性能,大规模数据基础架构的分布式对象存储服务。这是您自己环境中的AWS S3替代产品。它使用擦除编码来提供高度弹性的存储,可以容忍多达n / 2个节点的故障。它在云,容器,kubernetes和裸机环境上运行。它足够简单,可以在几秒钟内部署,并且可以扩展到100皮塔字节。MinIO适合存储照片,视频,日志文件,备份,VM和容器映像等对象。
MinIO支持分布式模式。在分布式模式下,您可以将多个驱动器(甚至在不同的计算机上)合并到一个对象存储服务器中。
该图表使用Helm软件包管理器引导在Kubernetes集群上的MinIO部署。
使用以下方法安装此图表:
$ helm install /minio
该命令以默认配置在Kubernetes集群上部署MinIO。的配置部分列出了可以在安装期间配置的参数。
在Kubernetes集群中运行的图表实例称为发行版。每个发行版均在集群中由唯一名称标识。安装图表后,Helm会自动分配一个唯一的发行名称。您还可以通过以下方式设置您的首选名称:
$ helm install --name my-release /minio
默认情况下,将使用预先生成的访问和密钥。要覆盖默认密钥,请将访问密钥和秘密密钥作为参数传递给头盔安装。
$ helm install --set accessKey=myaccesskey,secretKey=mysecretkey \
/minio
ConfigMap允许即使在部署Helm版本时也向容器注入配置数据。
要在版本中部署MinIO服务器配置时对其进行更新,您需要
helm inspect values stable/minio
。minio_server_config
YAML格式的文件中的设置,然后像这样传递该文件helm upgrade -f config.yaml stable/minio
。您也可以使用来检查版本升级的历史记录helm history my-release
。替换my-release
为实际的发行名称。
假设您的发行版名为my-release
,请使用以下命令将其删除:
$ helm delete my-release
该命令将删除与图表关联的所有Kubernetes组件并删除发行版。
您可以使用Helm在实时发行版中更新MinIO版本。假设您的发行版名为my-release
,请使用以下命令获取值:
$ helm get values my-release > old_values.yaml
然后使用您要使用的带有MinIO图像标签的文件中的字段image.tag
进行更改old_values.yaml
。现在使用
$ helm upgrade -f old_values.yaml my-release stable/minio
在values.yaml
文件中指定了默认升级策略。如果您想使用其他策略,请更新这些字段。
下表列出了MinIO图表的可配置参数及其默认值。
参数 | 描述 | 默认 |
---|---|---|
nameOverride |
提供名称代替 minio |
"" |
fullnameOverride |
提供一个名称来代替资源的全名 | "" |
image.repository |
图片库 | minio/minio |
image.tag |
MinIO图片标签。可能的值在此处列出。 | RELEASE.2020-01-03T19-12-21Z |
image.pullPolicy |
图片拉出政策 | IfNotPresent |
mcImage.repository |
客户端映像存储库 | minio/mc |
mcImage.tag |
mc图片标签。可能的值在此处列出。 | RELEASE.2020-01-03T20-33-14Z |
mcImage.pullPolicy |
mc图片拉取政策 | IfNotPresent |
ingress.enabled |
启用入口 | false |
ingress.labels |
入口标签 | {} |
ingress.annotations |
入口注释 | {} |
ingress.hosts |
入口接受的主机名 | [] |
ingress.tls |
入口TLS配置 | [] |
mode |
MinIO服务器模式(standalone 或distributed ) |
standalone |
extraArgs |
传递给MinIO服务器的其他命令行参数 | [] |
replicas |
节点数(仅适用于MinIO分布式模式)。 | 4 |
zones |
区域数(仅适用于MinIO分布式模式)。 | 1 |
drivesPerNode |
每个节点的驱动器数(仅适用于MinIO分布式模式)。 | 1 |
existingSecret |
具有访问权限和密钥的现有机密的名称。 | "" |
accessKey |
默认访问密钥(5至20个字符) | AKIAIOSFODNN7EXAMPLE |
secretKey |
默认密钥(8到40个字符) | wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
certsPath |
默认证书路径位置 | /etc/minio/certs |
configPathmc |
MinIO客户端的默认配置文件位置-MC | /etc/minio/mc |
mountPath |
永久驱动器的默认安装位置 | /export |
bucketRoot |
minio应该在其中服务存储桶的目录。 | 的价值 .mountPath |
clusterDomain |
运行Pod的Kubernetes集群的域名。 | cluster.local |
service.type |
Kubernetes服务类型 | ClusterIP |
service.port |
提供服务的Kubernetes端口 | 9000 |
service.externalIPs |
服务外部IP地址 | nil |
service.annotations |
服务注释 | {} |
serviceAccount.create |
切换新服务帐户的创建 | true |
serviceAccount.name |
要创建和/或使用的服务帐户名称 | "" |
persistence.enabled |
使用永久卷存储数据 | true |
persistence.size |
持续批量声明的大小 | 10Gi |
persistence.existingClaim |
使用现有的PVC保留数据 | nil |
persistence.storageClass |
PVC的存储类别名称 | nil |
persistence.accessMode |
ReadWriteOnce或ReadOnly | ReadWriteOnce |
persistence.subPath |
挂载永久卷的子目录(如果已设置) | "" |
resources |
CPU /内存资源请求/限制 | 内存:256Mi ,CPU:100m |
priorityClassName |
吊舱优先级设置 | "" |
securityContext.enabled |
启用以非root用户身份运行容器。注意:如果persistence.enabled=false 这样,securityContext将被自动禁用 |
true |
securityContext.runAsUser |
容器用户的用户标识 | 1000 |
securityContext.runAsGroup |
容器用户的组标识 | 1000 |
securityContext.fsGroup |
容器的持久卷安装的组标识 | 1000 |
nodeSelector |
吊舱分配的节点标签 | {} |
affinity |
广告连播分配的关联性设置 | {} |
tolerations |
吊舱分配的公差标签 | [] |
podAnnotations |
吊舱注释 | {} |
podLabels |
吊舱标签 | {} |
tls.enabled |
为MinIO服务器启用TLS | false |
tls.certSecret |
Kubernetes Secretpublic.crt 和private.key 文件。 |
"" |
livenessProbe.initialDelaySeconds |
启动活力探测之前的延迟 | 5 |
livenessProbe.periodSeconds |
多久执行一次探测 | 30 |
livenessProbe.timeoutSeconds |
探测超时时 | 1 |
livenessProbe.successThreshold |
探针失败的最少连续成功次数将被视为成功。 | 1 |
livenessProbe.failureThreshold |
成功后将被视为探针的最小连续失败数。 | 3 |
readinessProbe.initialDelaySeconds |
启动就绪探针之前的延迟 | 5 |
readinessProbe.periodSeconds |
多久执行一次探测 | 15 |
readinessProbe.timeoutSeconds |
探测超时时 | 1 |
readinessProbe.successThreshold |
探针失败的最少连续成功次数将被视为成功。 | 1 |
readinessProbe.failureThreshold |
成功后将被视为探针的最小连续失败数。 | 3 |
defaultBucket.enabled |
如果设置为true,则在安装MinIO之后将创建一个存储桶 | false |
defaultBucket.name |
桶名 | bucket |
defaultBucket.policy |
铲斗政策 | none |
defaultBucket.purge |
清除存储桶(如果已存在) | false |
buckets |
MinIO安装后要创建的存储桶列表 | [] |
makeBucketJob.annotations |
Kubernetes Batch的附加注释(make-bucket-job) | "" |
s3gateway.enabled |
将MinIO用作s3网关 | false |
s3gateway.replicas |
要并行运行的s3网关实例数 | 4 |
s3gateway.serviceEndpoint |
S3兼容服务的端点 | "" |
azuregateway.enabled |
使用MinIO作为Azure网关 | false |
azuregateway.replicas |
要并行运行的Azure网关实例数 | 4 |
gcsgateway.enabled |
将MinIO用作Google Cloud Storage网关 | false |
gcsgateway.gcsKeyJson |
服务帐户密钥的凭证json文件 | "" |
gcsgateway.projectId |
Google云端专案ID | "" |
ossgateway.enabled |
将MinIO用作阿里云对象存储服务网关 | false |
ossgateway.replicas |
要并行运行的OSS网关实例数 | 4 |
ossgateway.endpointURL |
OSS服务器端点。 | "" |
nasgateway.enabled |
使用MinIO作为NAS网关 | false |
nasgateway.replicas |
PV上并行运行的NAS网关实例数 | 4 |
b2gateway.enabled |
使用MinIO作为Backblaze B2网关 | false |
b2gateway.replicas |
要并行运行的b2网关实例数 | 4 |
environment |
在values.yaml 文件中设置MinIO服务器相关的环境变量。MinIO容器在启动时将被传递这些变量。 |
MINIO_BROWSER: "on" |
metrics.serviceMonitor.enabled |
设置此项true 以为Prometheus运算符创建ServiceMonitor |
false |
metrics.serviceMonitor.additionalLabels |
可以使用的其他标签,以便Prometheus可以发现ServiceMonitor | {} |
metrics.serviceMonitor.namespace |
在其中创建ServiceMonitor的可选名称空间 | nil |
metrics.serviceMonitor.interval |
刮擦间隔。如果未设置,则使用Prometheus默认刮擦间隔 | nil |
metrics.serviceMonitor.scrapeTimeout |
刮除超时。如果未设置,则使用Prometheus默认的抓取超时 | nil |
上面的某些参数映射到MinIO DockerHub映像中定义的env变量。
您可以使用的--set key=value[,key=value]
参数指定每个参数helm install
。例如,
$ helm install --name my-release \
--set persistence.size=100Gi \
/minio
上面的命令部署具有100Gi后备持久卷的MinIO服务器。
或者,您可以提供一个YAML文件,该文件在安装图表时指定参数值。例如,
$ helm install --name my-release -f values.yaml /minio
提示:您可以使用默认值。
该图表默认情况下以独立模式配置MinIO服务器。为了在规定MinIO服务器分布式模式,设定的mode
领域distributed
,
$ helm install --set mode=distributed /minio
这将MinIO服务器配置为具有4个节点的分布式模式。要更改分布式MinIO服务器中的节点数,请设置replicas
字段,
$ helm install --set mode=distributed,replicas=8 /minio
这将MinIO服务器配置为具有8个节点的分布式模式。请注意,该replicas
值应为最小值4,您可以运行的服务器数量没有限制。
您还可以通过添加新区域来扩展现有部署,以下命令将创建总共16个节点,每个区域运行8个节点。
$ helm install --set mode=distributed,replicas=8,zones=2 /minio
persistence.enabled
当mode
设置为时,该标志将被忽略distributed
。NAS网关模式下的MinIO可用于创建由单个PVReadWriteMany
模式支持的多个MinIO实例。当前很少有Kubernetes批量插件支持ReadWriteMany
模式。要使用Helm图表部署MinIO NAS网关,您需要使用支持的卷插件之一运行持久卷。本文档
概述了在Kubernetes集群中创建NFS PV的步骤。
要以NAS网关模式配置MinIO服务器,请将nasgateway.enabled
字段设置为true
,
$ helm install --set nasgateway.enabled=true /minio
这将提供4个由单个存储支持的MinIO NAS网关实例。要更改您的MinIO部署中的实例数,请设置replicas
字段,
$ helm install --set nasgateway.enabled=true,nasgateway.replicas=8 /minio
这为MinIO NAS网关提供了8个实例。
该图表提供了PersistentVolumeClaim并将相应的持久卷安装到默认位置/export
。您需要在Kubernetes集群中可用的物理存储才能正常工作。如果您愿意使用emptyDir
,请通过以下方式禁用PersistentVolumeClaim:
$ helm install --set persistence.enabled=false /minio
“ emptyDir卷是在将Pod分配给节点时首先创建的,并且只要该Pod在该节点上运行就存在。当出于任何原因从节点删除Pod时,emptyDir中的数据将被永久删除。 ”
如果持久卷声明已存在,请在安装期间指定它。
$ helm install --set persistence.existingClaim=PVC_NAME /minio
要为MinIO启用网络策略,
请安装可实现Kubernetes
NetworkPolicy规范的网络插件,
并将其设置networkPolicy.enabled
为true
。
对于Kubernetes v1.5和v1.6,还必须通过设置
DefaultDeny名称空间注释来打开NetworkPolicy 。注意:这将对名称空间中的所有Pod强制执行策略:
kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}"
启用NetworkPolicy后,流量将仅限于端口9000。
要获得更精确的政策,请设置networkPolicy.allowExternal=true
。这将
只允许带有生成的客户端标签的Pod连接到MinIO。
该标签将显示在成功安装的输出中。
您可以提供一个预先存在的机密,而不是让此图表为您创建机密,
就像现有的PersistentVolumeClaim。
首先,创建秘密:
$ kubectl create secret generic my-minio-secret --from-literal=accesskey=foobarbaz --from-literal=secretkey=foobarbazqux
然后安装图表,指定要使用现有机密:
$ helm install --set existingSecret=my-minio-secret /minio
秘密中应包含以下字段
accesskey
-访问密钥IDsecretkey
-秘密钥匙gcs_key.json
-如果您使用的是GCS网关功能,则为GCS密钥。这是可选的。要为MinIO容器启用TLS,请从CA获取TLS证书或创建自签名证书。在创建/获取证书时,请确保在Kubernetes StatefulSet中(对于分布式MinIO设置)根据标准DNS命名约定设置相应的域名。然后使用创建秘密
$ kubectl create secret generic tls-ssl-minio --from-file=path/to/private.key --from-file=path/to/public.crt
然后安装图表,并指定要使用TLS密码:
$ helm install --set tls.enabled=true,tls.certSecret=tls-ssl-minio /minio
要在通过Helm图表进行部署时将环境变量传递给MinIO容器,请使用以下命令行格式
$ helm install --set environment.MINIO_BROWSER=on,environment.MINIO_DOMAIN=domain-name /minio
您可以使用上述格式添加所需数量的环境变量。只需environment.
在set
标志下添加即可。
安装图表,指定要在安装后创建的存储桶:
$ helm install --set buckets[0].name=bucket1,buckets[0].policy=none,buckets[0].purge=false /minio
上面使用的配置参数的说明-
buckets[].name
-要创建的存储桶的名称,必须是长度> 0的字符串buckets[].policy
-可以是任何一个|下载|上传|公开buckets[].purge
-如果存储桶已存在,则清除