minio作为K8S后端存储
docker部署minio
mkdir -p /minio/datadocker 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-s3helm 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:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: csi-s3
---
apiVersion: v1
kind: Pod
metadata:name: nginx
spec:containers:- name: nginximage: nginxvolumeMounts:- mountPath: /xx/xxxname: s3-storagevolumes:- name: s3-storagepersistentVolumeClaim: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 发起请求,下载所需的数据。这同样需要网络连接。
网络延迟与性能
延迟:由于数据需要通过网络传输,读写操作的延迟通常会比直接使用本地或块存储要高。这对于需要快速响应的应用(如数据库)可能会影响性能。 -
带宽:网络带宽也会影响数据传输的速度,尤其是在处理大量数据时。
考虑因素
-
网络可靠性:确保网络连接的可靠性,以避免在读写操作时出现中断或失败。
-
安全性:使用 HTTPS 加密数据传输,以保护敏感数据在传输过程中的安全。
-
数据一致性:由于 S3 是基于对象的存储,其一致性模型为最终一致性,需考虑应用如何处理这种一致性。
-
总结来说,使用 S3 作为 Kubernetes 的后端存储时,所有的数据读写操作都依赖于网络,这对性能和应用设计都有一定影响。
- 注意事项
-
权限管理:
-
确保 Kubernetes 集群有足够的权限访问 S3 存储。这通常通过 IAM 角色或 S3 存储桶策略来实现。
-
性能考虑:
-
对象存储的性能与块存储不同,适合存储大量非结构化数据,但可能不适合需要高性能的应用。
-
数据安全性:
-
考虑数据在传输和存储过程中的安全性,可能需要启用加密和访问控制。
-
通过以上机制,csi-s3 驱动能够将 S3 对象存储无缝集成到 Kubernetes 中,为应用提供灵活的持久化存储解决方案。
-
关键点
-
没有真正的挂载:与传统的块存储不同,S3 是对象存储,实际上并没有将 S3 存储“挂载”到 Pods 上。相反,Pods 通过 csi-s3 驱动与 S3 API 进行交互。
-
通过 CSI 驱动进行读写:所有的读写操作都通过 csi-s3 驱动进行,这个驱动负责将 Pod 中的操作转换为对 S3 存储桶的 API 调用。
-
文件系统接口:尽管 Pods 可以使用类似于文件系统的接口(如 /mnt/s3),但底层的实现是通过网络请求与 S3 进行交互,而不是直接访问存储块。
-
性能考虑:由于 S3 是对象存储,性能和延迟可能会影响应用的表现,特别是对于高 IO 的工作负载
-
数据一致性:S3 的最终一致性模型可能会影响应用的行为,特别是在并发读写的情况下
-
因此,虽然在 Kubernetes 中看起来像是将 S3 存储挂载到 Pods,但实际上是通过 CSI 驱动与 S3 API 进行交互的过程。这种方式使得 S3 的对象存储特性能够在 Kubernetes 环境中使用。
-
个人觉得如果再测试环境中还是比nfs之类的网络文件存储好使,是真正live环境还是推荐使用ceph这种块存储性能更好的存储
相关文章:

minio作为K8S后端存储
docker部署minio mkdir -p /minio/datadocker run -d \-p 9000:9000 \-p 9001:9001 \--name minio \-v /minio/data:/data \-e "MINIO_ROOT_USERjbk" \-e "MINIO_ROOT_PASSWORDjbjbjb123" \quay.io/minio/minio server /data --console-address ":90…...

一周学会Flask3 Python Web开发-Jinja2模板访问对象
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 如果渲染模板传的是对象,如果如何来访问呢? 我们看下下面示例: 定义一个Student类 cla…...
RAGS评测后的数据 如何利用influxdb和grafan 进行数据汇总查看
RAGS(通常指相关性、准确性、语法、流畅性)评测后的数据能借助 InfluxDB 存储,再利用 Grafana 进行可视化展示,实现从四个维度查看数据,并详细呈现每个问题对应的这四个指标情况。以下是详细步骤: 1. 环境准备 InfluxDB 安装与配置 依据自身操作系统,从 InfluxDB 官网下…...
第25周JavaSpringboot实战-电商项目 4.商品分类管理
商品分类模块开发笔记 模块功能概述 实现分类数据的 增删改查 功能核心难点: 分类的父子级目录结构递归实现多级分类查找列表展示顺序控制(从父级向子级递归) 接口说明 后台接口 1. 添加分类 请求地址: /admin/category/add 请求方法: …...

C语言--正序、逆序输出为奇数的位。
题目: 采用正序和逆序分别输出为奇数的位。例如输入12345,正序输出135,逆序输出531 代码: #include <stdio.h>void printOddDigits(int num) {int res 0;int divider 10;while (num / divider > 10) {divider * 10;…...

C#快速调用DeepSeek接口,winform接入DeepSeek查询资料 C#零门槛接入DeepSeek C#接入DeepSeek源代码下载
下载地址<------完整源码 在数字化转型加速的背景下,企业应用系统对智能服务的需求日益增长。DeepSeek作为先进的人工智能服务平台,其自然语言处理、图像识别等核心能力可显著提升业务系统的智能化水平。传统开发模式下,C#开发者需要耗费大…...

H13-821 V3.0 HCIP 华为云服务架构题库
华为云上哪个服务能够用于收集来自主机和云服务的日志数据,并通过海量日志数据的分析与处理帮助开发或运维人员进行问题定位和分析? A:云监控服务 B:云日志服务 C:云审计服务 D:对象存储服务 答案ÿ…...
Linux主机用户登陆安全配置
Linux主机用户登陆安全配置 在Linux主机上进行用户登录安全配置是一个重要的安全措施,可以防止未经授权的访问。以下是如何创建用户hbu、赋予其sudo权限,以及禁止root用户SSH登录,以及通过ssh key管理主机用户登陆。 创建用户hbu 使用具有…...

提升数据洞察力:五款报表软件助力企业智能决策
概述 随着数据量的激增和企业对决策支持需求的提升,报表软件已经成为现代企业管理中不可或缺的工具。这些软件能够帮助企业高效处理数据、生成报告,并将数据可视化,从而推动更智能的决策过程。 1. 山海鲸报表 概述: 山海鲸报表…...

Linux | man 手册使用详解
注:本文为 “Linux man 手册” 相关文章合辑。 略作重排。 man 手册常用命令 1. 查看和搜索手册页 查看特定软件包的手册页,并使用 grep 命令过滤出包含特定关键字的行: man <package> | grep <keyword>在整个系统的手册页中…...
安全见闻4
今天学了Windows操作系统和驱动程序的相关知识 Windows注册表 注册表是windows系统中具有层次结构的核心数据库 储存的数据对windows 和Windows上运行的应用程序和服务至关重要。注册表时帮助windows控制硬件、软件、用户环境和windows界面的一套数据文件。 打开注册表编辑器…...

项目实战--网页五子棋(匹配模块)(4)
上期我们完成了游戏大厅的前端部分内容,今天我们实现后端部分内容 1. 维护在线用户 在用户登录成功后,我们可以维护好用户的websocket会话,把用户表示为在线状态,方便获取到用户的websocket会话 package org.ting.j20250110_g…...

P8716 [蓝桥杯 2020 省 AB2] 回文日期
1 题目说明 2 题目分析 暴力不会超时,O(n)的时间复杂度, < 1 0 8 <10^8 <108。分析见代码: #include<iostream> #include<string> using namespace std;int m[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};// 判断日期…...
如何在视频中提取关键帧?
在视频处理中,提取关键帧是一项常见的任务。下面将介绍如何基于FFmpeg和Python,结合OpenCV库来实现从视频中提取关键帧的功能。 实现思路 使用FFmpeg获取视频的关键帧时间戳:FFmpeg是一个强大的视频处理工具,可以通过命令行获取…...
為什麼使用不限量動態住宅IP採集數據?
在瞭解“不限量動態住宅IP數據採集”之前,我們需要先搞清楚什麼是“動態住宅IP”。簡單來說,動態IP是一種會定期變化的IP地址,通常由互聯網服務提供商(ISP)分配給家庭用戶。與固定IP(靜態IP)不同…...
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
在Go中使用Viper将YAML配置绑定到结构体时,主要依赖 mapstructure 标签(而非 json 或 yaml 标签)实现字段名映射。 --- ### 1. **基础绑定方法** 使用 viper.Unmarshal(&config) 或 viper.UnmarshalKey("key", &subConfi…...

OpenIPC开源FPV之Adaptive-Link安装
OpenIPC开源FPV之Adaptive-Link安装 1. 源由2. 介绍2.1 天空端安装2.2 地面端安装 3. 问题汇总3.1 安装脚本问题3.2 网络安装问题3.3 非SSC30KQ/SSC338Q硬件3.4 代码疑问 4. 总结5. 后续 1. 源由 鉴于飞行过程,发现一些马赛克现象,且60FPS桌面30FPS的录…...
[杂学笔记]OSI七层模型作用、HTTP协议中的各种方法、HTTP的头部字段、TLS握手、指针与引用的使用场景、零拷贝技术
1.OSI七层模型作用 物理层:负责光电信号的传输,以及将光电信号转化为二进制数据数据链路层:主要负责将收到的二进制数据进一步的封装为数据帧报文。同时因为数据在网络中传递的时候,每一个主机都能够收到报文数据,该层…...
RK3568开发笔记-AD7616调试笔记
目录 前言 一、AD7616介绍 高分辨率 高速采样速率 宽模拟输入范围 集成丰富功能 二、原理图连接 三、设备树配置 四、内核驱动配置 五、AD芯片测试 总结 前言 在嵌入式数据采集领域,将模拟信号精准转换为数字信号至关重要。AD7616 作为一款性能卓越的 16 位模数转换器…...

Unity摄像机与灯光相关知识
一、Inspector窗口 Inspector窗口可以查看和编辑对象的属性以及设置 其中包含各种组件,例如用Cube对象来举例 1.Sphere(Mesh)组件: 用来决定对象的网格属性,例如球体网格为Sphere、立方体网格为Cube 2.Mesh Renderer组件: 用来设置…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...