当前位置: 首页 > article >正文

minio作为K8S后端存储

docker部署minio

mkdir -p /minio/data

docker run -d \
   -p 9000:9000 \
   -p 9001:9001 \
   --name minio \
   -v /minio/data:/data \
   -e "MINIO_ROOT_USER=jbk" \
   -e "MINIO_ROOT_PASSWORD=jbjbjb123" \
   quay.io/minio/minio server /data --console-address ":9001"

直接安装csi-s3

https://artifacthub.io/packages/helm/k8s-csi-s3/csi-s3
helm repo add kubeblocks https://apecloud.github.io/helm-charts
helm pull kubeblocks/csi-s3
kubectl create ns csi-s3

helm install -n csi-s3 csi-s3 csi-s3-0.31.4.tgz  \
 --set secret.accessKey="tw8iFXwkBlrUmNKLp6ei" \
 --set secret.secretKey="GBQW7xObmwcTDo4Yz5b2OH4u73i6sEPGBhnvxvSl" \
 --set secret.endpoint="http://172.16.8.104:9000" 
 #你的minio地址
安装完成如下

在这里插入图片描述

简单测试
cat <<EOF > demon.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: s3-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: csi-s3
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx
      volumeMounts:
        - mountPath: /xx/xxx
          name: s3-storage
  volumes:
    - name: s3-storage
      persistentVolumeClaim:
        claimName: s3-pvc
EOF
部署pods基本都没有什么问题,比如kafka集群,redis集群都OK ,不再过多演示

在这里插入图片描述
在这里插入图片描述

将 S3 作为 Kubernetes 的后端存储,主要依赖于 CSI(Container Storage Interface)驱动的实现。csi-s3 驱动负责将 S3 对象存储与 Kubernetes 的存储管理系统集成。以下是其实现原理的简要概述:

实现原理

  • CSI 驱动架构:

  • CSI 是 Kubernetes 的标准接口,允许不同的存储系统(如 S3)与 Kubernetes 集成。csi-s3 驱动实现了 CSI 的 API,使得 Kubernetes 能够通过标准化的方式与 S3 进行交互。
    StorageClass 和 PVC:

  • 用户首先创建一个 StorageClass,指定使用 csi-s3 驱动。然后,用户创建一个 PersistentVolumeClaim(PVC),请求特定的存储容量。Kubernetes 会根据 PVC 的请求,调用 CSI 驱动来动态创建或绑定相应的存储资源。
    卷的创建与管理:

  • 当 PVC 被创建时,csi-s3 驱动会处理卷的创建请求。它会与 S3 API 交互,创建一个新的 S3 存储桶或在现有存储桶中创建一个对象。例如,驱动可能会创建一个特定的文件夹或对象,代表 PVC 的存储。
    数据读写操作:

  • 当 Pod 需要访问存储时,csi-s3 驱动会将读写请求转换为 S3 API 调用。例如,写入数据时,驱动会将数据上传到 S3 存储桶;读取数据时,驱动会从 S3 存储桶下载数据。
    数据一致性和性能:

  • S3 是基于对象的存储,通常采用最终一致性模型。csi-s3 驱动需要处理数据一致性的问题,确保应用能够正确处理数据的读取和写入。
    对于性能,S3 的延迟相对较高,因此不适合所有类型的工作负载,尤其是需要低延迟和高 IO 性能的数据库应用。
    卷的删除与回收:

  • 当 PVC 被删除时,csi-s3 驱动会处理卷的删除请求,可能会删除相应的 S3 对象或存储桶,具体取决于 PersistentVolumeReclaimPolicy 的配置(如 Retain、Delete 等)。
    关键组件

  • CSI 适配器:

  • csi-s3 驱动实现了 CSI 适配器,处理 Kubernetes 发送的存储请求。

  • S3 API:

  • 驱动使用 AWS S3 API 或兼容 S3 的 API 与对象存储进行交互。

  • Kubernetes API:

  • 驱动与 Kubernetes API 交互,处理 PVC、PV 和 StorageClass 的生命周期管理。

网络交互

数据写入:
  • 当一个 Pod 需要将数据写入 S3 时,csi-s3 驱动会通过网络向 S3 API 发起 HTTP(S) 请求,将数据上传到指定的 S3 存储桶。这意味着数据需要经过网络传输,从 Pod 的容器到 S3 存储服务。
    数据读取:

  • 类似地,当 Pod 需要读取数据时,csi-s3 驱动会通过网络向 S3 API 发起请求,下载所需的数据。这同样需要网络连接。
    网络延迟与性能
    延迟:由于数据需要通过网络传输,读写操作的延迟通常会比直接使用本地或块存储要高。这对于需要快速响应的应用(如数据库)可能会影响性能。

  • 带宽:网络带宽也会影响数据传输的速度,尤其是在处理大量数据时。

考虑因素

- 注意事项


http://www.kler.cn/a/554383.html

相关文章:

  • Android看门狗(WatchDog)
  • 缺少网络安全组织架构 网络安全缺陷
  • 前端面试场景题 1 (批量处理toast、减少if-else)
  • 保姆级! 本地部署DeepSeek-R1大模型 安装Ollama Api 后,Postman本地调用 deepseek
  • Python C API 深度解析与实战指南
  • 备战蓝桥杯 -牛客
  • 速度分析是怎么做的?叠加速度是波传播速度吗?
  • Node.js高频面试题精选及参考答案
  • 关于重启Pod后,CNI网络插件问题报错
  • 【YOLO11改进trick】Pinwheel-shaped Conv风车状卷积引入YOLO11,含创新点代码,方便发论文
  • 奇安信春招一面面试题
  • 2000-2019年各省农业机械总动力数据
  • Linux搭建Nginx直播流媒体服务RTMP/RTSP转Http-flv视频浏览器在线播放/Vue/Java/ffmpeg
  • 深度学习之迁移学习resnet18模型及调用模型预测
  • 【深度学习】Unet的基础介绍
  • 【个人记录】openEuler安装K3S并配置为GPU节点
  • js数据类型全解析,怎么区分呢?
  • 【算法题】1749. 任意子数组和的绝对值的最大值(LeetCode)
  • XML XML约束 一、XML约束概述
  • 【HeadFirst系列之HeadFirst设计模式】第7天之命令模式:封装请求,轻松实现解耦!