OKD 实战:基于 LVM 动态存储部署 MinIO 及多端口 (纯 CLI 版)

2025博客之星年度评选已开启 10w+人浏览 3.5k人参与

OKD 实战:基于 LVM 动态存储部署 MinIO 及多端口 (纯 CLI 版)

摘要:在云原生架构中,命令行操作(CLI)是实现自动化与可重复性的核心。本文详细记录了在 OKD SNO 环境下,如何通过 oc 工具完成从动态存储申请到 MinIO 多端口部署的全过程。


1. 架构图解

1.1 存储与流量转发逻辑

9001 (Route)

9001 (Service)

PVC Request

Slice

用户浏览器

OpenShift Router

MinIO Pod

LVM Operator

NVMe Disk


2. 什么是 PVC (持久化卷声明)?

  • 定义:PVC 是用户对存储资源的“申请书”。
  • 解耦:开发者只需声明容量和访问模式,无需关心底层存储硬件。
  • 动态性:配合 StorageClass,系统可自动在 LVM 卷组中切分物理空间并绑定。

3. 部署全过程 (纯命令行实战)

3.1 准备命名空间

oc new-project minio-storage

命令解释

  • oc new-project: 创建一个新的项目空间并自动切换到该项目下,实现资源间的逻辑隔离。

3.2 创建持久化存储声明 (PVC)

cat <<EOF | oc apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minio-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: lvms-vg1
EOF

命令解释

  • cat <<EOF | oc apply -f -: 使用标准输入直接创建 YAML,避免频繁创建临时文件。
  • accessModes: ReadWriteOnce: 定义该卷只能被单个 Pod 以读写模式挂载。
  • storageClassName: lvms-vg1: 指定使用 LVM 动态存储类,这是触发 Operator 自动切盘的关键。

3.3 部署 MinIO 核心应用

oc new-app --name=minio \
  --image=quay.io/minio/minio:latest \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=admin123

命令解释

  • oc new-app: 自动化部署命令,会同步创建 Deployment、Service。
  • -e: 为容器注入运行所需的环境变量(AccessKey/SecretKey)。

3.4 注入启动参数与多端口 (关键修正)

oc patch deployment minio --type=json -p='[
  {"op": "add", "path": "/spec/template/spec/containers/0/command", "value": ["minio"]},
  {"op": "add", "path": "/spec/template/spec/containers/0/args", "value": ["server", "/data", "--console-address", ":9001"]},
  {"op": "add", "path": "/spec/template/spec/containers/0/ports/-", "value": {"containerPort": 9001, "protocol": "TCP"}}
]'

命令解释

  • oc patch: 动态修改已存在的资源配置。
  • command/args: 显式指定 MinIO 的启动模式及数据目录,并强制开启 9001 控制台端口
  • ports/-: 在端口列表中追加定义 9001,确保集群路由能正确寻址。

3.5 挂载动态存储卷

oc set volume deployment/minio --add \
  --name=minio-data \
  --type=pvc \
  --claim-name=minio-pvc \
  --mount-path=/data

命令解释

  • oc set volume: 管理 Deployment 的卷挂载。
  • --mount-path: 将 10GB 的 LVM 硬盘挂载到容器内的 /data 目录。执行后 Pod 会触发滚动重启。

3.6 暴露访问路由 (Route)

oc expose svc/minio --name=minio-api --port=9000
oc create route edge minio-ui --service=minio --port=9001

命令解释

  • oc expose: 为 9000 端口创建标准的 API 访问路径。
  • oc create route edge: 为 9001 控制台创建一个带 TLS 证书加密 的路由,确保浏览器访问的安全性。

4. 验证与测试

4.1 检查资源状态

oc get pods,pvc,route

预期现象

  • Pod 状态为 Running
  • PVC 状态为 Bound (说明 10GB LVM 空间已成功划拨)。
  • Route 列表显示两个外部访问域名。

4.2 暴力持久化验证

oc delete pod -l app=minio

操作流程

  1. 进入 UI 上传一张图片。
  2. 执行上述删除命令模拟宕机。
  3. 新 Pod 启动后,重新登录 UI,图片依然存在,证明 LVM 存储持久化 成功。

5. 结语与心得

  1. 标准化:纯 CLI 操作极大降低了人为误操作的概率,且所有操作均可编写为自动化脚本。
  2. 网络闭环:理解 Service 到 Route 的端口映射关系是部署复杂有状态应用的关键。
  3. 高性能:LVM 动态存储提供了原生磁盘级的 I/O 效率,完美承载对象存储的高频并发请求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值