跳到主要内容

部署MinIO

ONES 将备份数据统一存放于 MinIO 对象存储服务,生产环境请参考第1章节、测试环境请参考第2章节来部署MinIO服务。

1 单独部署 MinIO

异机部署备份数据存储服务时,推荐使用 Docker 部署 MinIO。注意:不要在 k3s 节点上部署 Docker。

1.1 安装 Docker

Linux各发行版参考官方文档:https://docs.docker.com/engine/install/

1.2 部署 MinIO

参数说明

通过如下三个环境变量配置部署的必要参数,请根据部署的实际需求修改:

  • MINIO_USER: minio的访问用户,同时也是 S3 协议中的 accessKey
  • MINIO_PASSWORD: minio的访问密钥,同时也是 S3 协议中的 secretKey,注意至少需要8位
  • MINIO_DATA_PATH: minio在节点机上的数据存放路径

通过环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 来指定访问MinIO的账户名和密码。

此账户密码可以用来登录MinIO管理后台和客户端访问对象存储。

确保宿主机上的端口 9000 和 9090 没有被占用,否则会部署失败。

启动MinIO服务

# 根据部署实际需要调整
MINIO_USER=miniouser
MINIO_PASSWORD=QJndse89 # 注意密码至少需要8位
MINIO_DATA_PATH=/data/ones/minio/data

mkdir -p ${MINIO_DATA_PATH}
docker run -d --restart always \
--name minio \
-p 9000:9000 \
-p 9090:9090 \
-v ${MINIO_DATA_PATH}:/data \
-e "MINIO_ROOT_USER=${MINIO_USER}" \
-e "MINIO_ROOT_PASSWORD=${MINIO_PASSWORD}" \
docker.io/minio/minio:RELEASE.2024-06-26T01-06-18Z server /data --console-address ":9090"

验证检查

# 容器运行后,检查管理后台可访问,如下访问没有报错即可
curl http://localhost:9090

# 浏览器打开管理后台 http://[host-ip]:9090,并使用 MINIO_USER 和 MINIO_PASSWORD 对应的账户密码登录
# 能够登录成功即可

2 集成部署 MinIO

在 ONES 服务节点上部署备份数据存储服务时使用此方案。根据 ONES 版本不同选择如下一种方案。

方案2.1与 ONES 版本配置无关联,如重装K3S,需重新拉取镜像、重新部署MinIO服务;

方案2.2属于 ONES 内置的备份MinIO,如重装K3S,只需 make setup-ones-backup 启用MinIO服务即可。

2.1 6.33以下版本部署外置MinIO

使用相同的三个环境变量,配置部署的必要参数,详细说明见上面的 Docker 部署部分。

启用外置MinIO

# 根据部署实际需要调整
MINIO_USER=miniouser
MINIO_PASSWORD=QJndse89 # 注意密码至少需要8位
MINIO_DATA_PATH=/data/ones/minio/data

mkdir -p ${MINIO_DATA_PATH}
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Namespace
metadata:
name: ones-backup
labels:
name: ones-backup
---
apiVersion: v1
kind: Service
metadata:
name: minio-service
namespace: ones-backup
labels:
app: minio
spec:
ports:
- port: 9000
clusterIP: None
selector:
app: minio
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: minio
namespace: ones-backup
spec:
replicas: 1
serviceName: minio-service
selector:
matchLabels:
app: minio
template:
metadata:
labels:
app: minio
spec:
containers:
- name: minio
image: docker.io/minio/minio:RELEASE.2024-06-26T01-06-18Z
command:
- /bin/bash
- -c
args:
- minio server /data --console-address :9090
env:
- name: MINIO_ROOT_USER
value: "${MINIO_USER}"
- name: MINIO_ROOT_PASSWORD
value: "${MINIO_PASSWORD}"
volumeMounts:
- mountPath: /data
name: data-backup-minio
volumes:
- name: data-backup-minio
hostPath:
path: ${MINIO_DATA_PATH}
type: DirectoryOrCreate
EOF

效果检查

# 等待服务启动
kubectl -n ones-backup get po -l 'app=minio' -w

# 开启临时转发以访问 MinIO 控制台,注意这里只是临时测试用,要提供长期外部访问请使用 NodePort Service
kubectl port-forward pod/minio-0 9000 9090 -n ones-backup --address=0.0.0.0

# 另开一个终端,如下命令返回报错即可;或者在能访问节点的浏览器上访问,访问成功即可。
curl http://localhost:9090

2.2 6.33及以上版本部署内置MinIO

在 ONES 服务节点上部署备份数据存储服务时使用此方案。

修改配置

可选修改配置: onesBackupInternalMinioConsoleNodePort, onesBackupInternalMinioNodePort, 默认值分别是 31901、 31900

ones-ai-k8s.sh

vi config/private.yaml
onesBackupInternalMinioRootUser: miniouser
onesBackupInternalMinioRootPassword: QJndse89
onesBackupInternalMinioUserDefinedDataHostPath: "/data/ones/minio/data" # minio 文件存储目录,可按需修改

部署内置 MinIO

make setup-ones-backup

效果检查

# 等待服务启动
kubectl -n ones-backup get po -l 'app=minio' -w

# 另开一个终端,如下命令返回报错即可;或者在能访问节点的浏览器上访问,访问成功即可。
curl http://<IP>:31901

3 离线环境下导入 MinIO 镜像

如果是在离线的节点采用上述任一方式部署MinIO,无法直接从公共镜像仓拉取 MinIO时,可使用手动导入镜像的方法:

# 在允许网络访问的节点上拉取镜像
curl -O https://res.ones.pro/script/k3s_offinstall/minio-2024.tar &

# 将 minio-image.tar 复制到要部署的节点上

# 对于 Docker 部署
docker load -i minio-2024.tar
docker images | grep minio

# 对于 k3s 部署
ctr i import minio-2024.tar
ctr i ls | grep minio