首页 > 解决方案 > Kubernetes 上的 minIO:备份它的最佳方式

问题描述

到目前为止,我尝试通过以下两种方式进行部署:

1. Deploy it as a statefulset on Kubernetes and using persistent 
volume of nfs as its storage . But then I learnt that we shouldn't 
be running minio backed by NAS as erasure code should not be run on NAS data.

2. Deploy it as Daemonset using local volumes. This time I attached 
separate disks to my nodes and labelled them such 
that minio is scheduled to run on these nodes. The disks are mounted on 
/data/minio on each of the nodes

但现在每天,节点都面临磁盘压力,minio pod 被驱逐。当我检查 kubelet 日志时:

Aug 13 21:05:45 staging-node2 kubelet[2188]: I0813 21:05:45.968179    2188 kubelet_pods.go:1073] Killing unwanted pod "minio-kjrkc"   
Aug 13 21:05:45 staging-node2 kubelet[2188]: I0813 21:05:45.975372    2188 kuberuntime_container.go:559] Killing container "docker://6da1247718f8e6c92399e231f8c31ff1c510737c658ac2aca87c1659aa6b51cc" with 30 second grace period

它试图杀死豆荚,但容器永远不会死亡。即使 minio 收到 TERMINATED 信号,容器仍然处于启动状态。

标签: kuberneteskubeletminio

解决方案


在 Kubernetes 上部署 MinIO 的正确方法是使用 StatefulSet 在多个分布式节点上使用本地卷。您可以通过 Yaml 文件或 Helm Chart 或通过我们的 MinIO Operator 执行此操作。文档可在此处获取https://github.com/minio/minio/tree/master/docs/orchestration/kubernetes

本地 minio 安装还有哪些其他选择?

具有至少 4 个 Pod 和通过卷存储的 StatefulSethostPath通常是正确的部署方式。根据用例和现有基础设施,可能还有其他相关方法。

不推荐使用本地存储还是我使用不正确?

建议使用本地存储。我需要更多信息来了解这里到底出了什么问题,但如果你有专用的本地存储驱动器,你应该没问题。

知道我是否必须为 minio 显式配置任何 pre-hook 以接受终止信号?

MinIO 处理信号以终止等。因此不需要预挂钩。

希望这会有所帮助,请加入我们的 Slack 频道@https ://slack.min.io进行详细讨论等。


推荐阅读