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

Kubernetes高级存储

Kubernetes高级存储

PV PVC

k8s支持的存储系统很多,全部掌握不现实。为了屏蔽底层存储实现的细节,方便用户使用,k8s引入PV和PVC两种资源对象。

PV(Persistent Volume)持久化卷,对底层共享存储的抽象,一般由k8s管理员进行创建配置,通过插件完成共享存储的对接。

PVC(Persistent Volume Claim)持久化声明,是用户对于存储需求的一种声明。PVC就是用户向k8s系统发出的一种资源需求申请。
在这里插入图片描述

PV

官方文档:

Kubernetes 文档
概念
存储
持久卷

资源清单:

apiVersion: v1  
kind: PersistentVolume
metadata:name: pv2
spec:nfs: # 存储类型,与底层真正存储对应capacity:  # 存储能力,目前只支持存储空间的设置storage: 2GiaccessModes:  # 访问模式storageClassName: # 存储类别persistentVolumeReclaimPolicy: # 回收策略

参数说明:

  • 存储类型

    底层实际存储的类型,kubernetes支持多种存储类型,每种存储类型的配置都有所差异

  • 存储能力

    目前只支持存储空间的设置( storage=1Gi )

  • 访问模式

    ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载ReadOnlyMany(ROX): 只读权限,可以被多个节点挂载ReadWriteMany(RWX):读写权限,可以被多个节点挂载

  • 回收策略

    Retain (保留) 保留数据,需要管理员手工清理数据Recycle(回收) 清除 PV 中的数据,效果相当于执行 rm -rf /thevolume/* Delete (删除) 与 PV 相连的后端存储完成 volume 的删除操作

实验:

使用NFS作为存储,创建3个PV,对应三个暴露路径

  1. 准备环境

    #创建目录
    [root@master ~]# mkdir /root/data/{pv1,pv2,pv3} -pv
    mkdir: created directory ‘/root/data/pv1’
    mkdir: created directory ‘/root/data/pv2’
    mkdir: created directory ‘/root/data/pv3’
    # 暴露服务 IP网段是你集群节点所在的网段
    [root@master ~]# vim /etc/exports
    [root@master ~]# more /etc/exports
    /root/data/pv1     192.168.126.0/24(rw,no_root_squash)
    /root/data/pv2     192.168.126.0/24(rw,no_root_squash)
    /root/data/pv3     192.168.126.0/24(rw,no_root_squash)
    #重启服务
    [root@master ~]# systemctl restart nfs
  2. 创建pv.yaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:name:  pv1
    spec:capacity: storage: 1GiaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: Retainnfs:path: /root/data/pv1server: 192.168.126.132---apiVersion: v1
    kind: PersistentVolume
    metadata:name:  pv2
    spec:capacity: storage: 2GiaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: Retainnfs:path: /root/data/pv2server: 192.168.126.132---apiVersion: v1
    kind: PersistentVolume
    metadata:name:  pv3
    spec:capacity: storage: 3GiaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: Retainnfs:path: /root/data/pv3server: 192.168.126.132
    
  3. 操作

    [root@master ~]# vim pv.yaml
    #创建pv
    [root@master ~]# kubectl create -f pv.yaml
    persistentvolume/pv1 created
    persistentvolume/pv2 created
    persistentvolume/pv3 created
    #查看pv
    [root@master ~]# kubectl get pv -o wide
    NAME   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE   VOLUMEMODE
    pv1    1Gi        RWX            Retain           Available                                   44s   Filesystem
    pv2    2Gi        RWX            Retain           Available                                   44s   Filesystem
    pv3    3Gi        RWX            Retain           Available                                   44s   Filesystem

PVC

PVC是资源申请,用来声明对存储空间,访问模式,存储类别需求信息

资源清单:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvcnamespace: dev
spec:accessModes: # 访问模式selector: # 采用标签对PV选择storageClassName: # 存储类别resources: # 请求空间requests:storage: 5Gi

参数说明:

  • 访问模式:描述用户应用对存储资源的访问权限
  • 选择条件:通过Label Selector使PVC对于系统中已存在的PV进行筛选
  • 存储类别:PVC定义时可设定需要的后端存储类别
  • 资源请求:描述对存储资源的请求

实验:

  1. 创建pvc.yaml,申请pv

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:name: pvc1namespace: dev
    spec:accessModes: - ReadWriteManyresources:requests:storage: 1Gi---apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:name: pvc2namespace: dev
    spec:accessModes: - ReadWriteManyresources:requests:storage: 1Gi---apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:name: pvc3namespace: dev
    spec:accessModes: - ReadWriteManyresources:requests:storage: 1Gi
    
    #创建pvc
    [root@master ~]# kubectl create -f pvc.yaml
    persistentvolumeclaim/pvc1 created
    persistentvolumeclaim/pvc2 created
    persistentvolumeclaim/pvc3 created
    #查看pvc
    [root@master ~]# kubectl get pvc  -n dev -o wide
    NAME   STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
    pvc1   Bound    pv1      1Gi        RWX                           14s   Filesystem
    pvc2   Bound    pv2      2Gi        RWX                           14s   Filesystem
    pvc3   Bound    pv3      3Gi        RWX                           14s   Filesystem
    #查看pv
    [root@master ~]# kubectl get pv -o wide
    NAME   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM      STORAGECLASS   REASON   AGE   VOLUMEMODE
    pv1    1Gi        RWX            Retain           Bound    dev/pvc1                           22m   Filesystem
    pv2    2Gi        RWX            Retain           Bound    dev/pvc2                           22m   Filesystem
    pv3    3Gi        RWX            Retain           Bound    dev/pvc3                           22m   Filesystem
  2. 创建pods.yaml,实验pv

    apiVersion: v1
    kind: Pod
    metadata:name: pod1namespace: dev
    spec:containers:- name: busyboximage: busybox:1.30command: ["/bin/sh","-c","while true;do echo pod1 >> /root/out.txt; sleep 10; done;"]volumeMounts:- name: volumemountPath: /root/volumes:- name: volumepersistentVolumeClaim:claimName: pvc1readOnly: false
    ---
    apiVersion: v1
    kind: Pod
    metadata:name: pod2namespace: dev
    spec:containers:- name: busyboximage: busybox:1.30command: ["/bin/sh","-c","while true;do echo pod2 >> /root/out.txt; sleep 10; done;"]volumeMounts:- name: volumemountPath: /root/volumes:- name: volumepersistentVolumeClaim:claimName: pvc2readOnly: false        
    
    #创建Pod
    [root@master ~]# kubectl create -f pods.yaml
    pod/pod1 created
    pod/pod2 created
    #查看Pod
    [root@master ~]# kubectl get pods -n dev -o wide
    NAME   READY   STATUS    RESTARTS   AGE    IP            NODE    NOMINATED NODE   READINESS GATES
    pod1   1/1     Running   0          103s   10.244.1.5    node1   <none>           <none>
    pod2   1/1     Running   0          103s   10.244.2.11   node2   <none>           <none>
    #查看PVC
    [root@master ~]#  kubectl get pvc -n dev -o wide
    NAME   STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
    pvc1   Bound    pv1      1Gi        RWX                           10m   Filesystem
    pvc2   Bound    pv2      2Gi        RWX                           10m   Filesystem
    pvc3   Bound    pv3      3Gi        RWX                           10m   Filesystem
    #查看数据卷输出信息
    [root@master ~]#  more /root/data/pv1/out.txt
    pod1
    pod1
    pod1
    pod1
    pod1
    [root@master ~]#  more /root/data/pv2/out.txt
    pod2
    pod2
    pod2
    pod2
    pod2#数据已经同步
    

生命周期

PV和PVC一一对应,类似于键值对,遵循以下生命周期:

  • 资源供应:手动创建底层存储和PV
  • 资源绑定:PV创建后,k8s负责根据PVC声明去寻找PV,并绑定(如果找不到,PVC会一直处于Pending状态,直到管理员创建了符合要求的PV),PV一旦绑定PVC,就会被这个PVC独占,不能再与其他PVC进行绑定
  • 资源使用:可在Pod里像Volume使用数据卷
  • 资源释放:用户删除PVC来释放PV

在这里插入图片描述

相关文章:

Kubernetes高级存储

Kubernetes高级存储 PV PVC k8s支持的存储系统很多&#xff0c;全部掌握不现实。为了屏蔽底层存储实现的细节&#xff0c;方便用户使用&#xff0c;k8s引入PV和PVC两种资源对象。 PV(Persistent Volume)持久化卷&#xff0c;对底层共享存储的抽象&#xff0c;一般由k8s管理员进…...

云原生之使用Docker部署docker-compose-ui工具

云原生之使用Docker部署docker-compose-ui工具 一、Docker Compose UI介绍二、检查本地docker环境1.检查系统版本2.检查docker状态 三、下载Docker Compose UI镜像四、部署Docker Compose UI服务1.新建安装目录2.创建Docker Compose UI容器3.检查Docker Compose UI容器状态4.查…...

文心一言 vs GPT4

本周真是科技爱好者的狂欢节。GPT4和文心一言接连发布&#xff0c;AI工具已经开始走进千家万户。 拿文心一言发布会上的几个问题调戏了 GPT4 一下&#xff0c;看看表现如何。 第一个为文心的回答&#xff0c;第二个为GPT4 的回答。 1. 可以总结一下三体的核心内容吗&#xf…...

Tcl-5. format 命令

format 命令和 C 语言中的 printf 和 sprintf 命令类似。它根据一组格式说明来格式化字符 串。此命令不会改变被操作字符串的内容。 [语法]&#xff1a;format spec value1 value2 ... spec 变元包含了格式说明关键词和附加文字。使用%来引入一个关键词&#xff0c;后跟 0 个…...

BloombergGPT: 首个金融垂直领域大语言模型

BloombergGPT: 首个金融垂直领域大语言模型 Bloomberg 刚刚发布了一篇研究论文&#xff0c;详细介绍了他们最新的突破性技术 BloombergGPT。BloombergGPT是一个大型生成式人工智能模型&#xff0c;专门使用大量金融数据进行了训练&#xff0c;以支持金融行业自然语言处理 (NLP…...

CMake深度解析:掌握add_custom_command,精通Makefile生成规则

CMake深度解析&#xff1a;掌握add_custom_command&#xff0c;精通Makefile生成规则 1. CMake简介与基础知识1.1 CMake的基本概念&#xff08;CMake Basic Concepts&#xff09;1.1.1 项目&#xff08;Project&#xff09;1.1.2 目标&#xff08;Target&#xff09;1.1.3 命令…...

基于Yolov5目标检测的物体分类识别及定位(二) -- yolov5运行环境搭建及label格式转换

刚开始跟着网上的教程做&#xff0c;把环境安装错了&#xff0c;后来直接用GitHub的官方教程来安装环境。 地址是yolov5官方团队代码及教程&#xff0c;看readme文件就可以。 系列文章&#xff1a; 基于Yolov5目标检测的物体分类识别及定位&#xff08;一&#xff09; -- 数据集…...

Office project 2019安装

哈喽&#xff0c;大家好。今天一起学习的是project 2019的安装&#xff0c;Microsoft Office project项目管理工具软件&#xff0c;凝集了许多成熟的项目管理现代理论和方法&#xff0c;可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…...

【leetcode-mysql】1251. 平均售价

题目&#xff1a; Table: Prices ---------------------- | Column Name | Type | ---------------------- | product_id | int | | start_date | date | | end_date | date | | price | int | ---------------------- (product_id&#xff0c;start_date&#xff0c;end_dat…...

Razor代码复用

1.布局&#xff08;Layout&#xff09;复用 Layout的使用&#xff0c;就像WebForm的模板页一样&#xff0c;甚至会更加简单&#xff0c;更加方便和明了。 要使用Layout&#xff0c;首先要在模板页相应的位置添加RenderBody()方法&#xff1a; <!DOCTYPE html><html la…...

PRL:上海交大张文涛团队实现量子材料相关突破

来源&#xff1a;上海交通大学 近期&#xff0c;上海交通大学物理与天文学院张文涛研究组利用自行研制的高能量和高时间分辨率角分辨光电子能谱系统对量子材料1T-TiSe₂电子结构进行了超快激光操控研究。利用超快光激发与电荷密度波相有关的相干声子&#xff0c;引起晶格内原子…...

impala中group_concat()函数无法对内容进行order by

描述&#xff1a; 使用的是impala数据库&#xff0c;假设有四笔数据&#xff0c;是无序的&#xff0c;业务上要求将其行转列成一行数据&#xff0c;并且里面的数据要按从小到大排序。 过程&#xff1a; 猜测&#xff1a; 数据库Oracle、Mysql、MSsql等支持group_concat中使…...

MySQL 数据库全局变量中文解释

NameValueauto_increment_incrementAUTO_INCREMENT 字段值的自增长步长值。auto_increment_offsetAUTO_INCREMENT 字段值的初始值。autocommit指示新连接的默认提交模式是否启用。automatic_sp_privileges控制是否在存储过程上创建或更改时自动分配特定权限。back_log在开始拒绝…...

设计模式之~状态模式

状态模式&#xff08;State&#xff09;&#xff0c;当一个对象的内部状态改变时允许改变其行为&#xff0c;这个对象看起来像是改变了其类。 能够让程序根据不同的外部情况来做出不同的响应&#xff0c;最直接的方法就是在程序中将这些 可能发生的外部情况全部考虑到&#xff…...

【21JavaScript break 和 continue 语句】JavaScript中的break和continue语句:控制循环流程的关键技巧

JavaScript break 和 continue 语句 在JavaScript中&#xff0c;break和continue是两个关键字&#xff0c;用于控制循环结构的执行流程。 break语句 break语句用于中断循环并跳出循环体&#xff0c;使程序执行流程继续到循环之后的下一行代码。 在for循环中使用break for (…...

【SpringBoot】 设置随机数据 用于测试用例

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 设置随机数据——常用于测试用例 SpringBoot设…...

chatgpt赋能python:Python如何获取微信聊天记录

Python如何获取微信聊天记录 作为世界上最受欢迎的即时通讯工具之一&#xff0c;微信被大量用户使用。然而&#xff0c;微信聊天记录的备份和管理是一个重要的问题&#xff0c;特别是对于那些需要在工作和个人生活中快速查找重要信息的人来说。 幸运的是&#xff0c;Python编…...

VP记录:Codeforces Round 599 (Div. 2) A~D

传送门:CF 前提提要:无 A题:A. Maximum Square 刚开始的第一个想法是排序然后二分答案.但是一看范围才1000,果断直接使用暴力枚举. 考虑枚举最终的答案,然后记录有多少个 a i ai ai大于此值,然后判断能否构成一个正方形即可. #include <bits/stdc.h> using namespace…...

01-项目介绍

1、特色与亮点 千万级流量的大型分布式系统架构设计。 高性能、高并发、高可用场景解决方案。 2、项目安排 架构搭建&#xff0c;使用前后端分离架构。 功能开发&#xff0c;实现基本的选座排队购票功能。 引入高并发技术&#xff0c;实现高性能抢票。 3、项目收获 学习…...

《Python编程从入门到实践》学习笔记06字典

alien_0{color:green,points:5} print(alien_0[color]) print(alien_0[points])green 5 alien_0{color:green,points:5} new_pointsalien_0[points] print(fyou just earned {new_points} points!)you just earned 5 points! #添加键值对 alien_0{color:green,points:5} prin…...

Mplus实战:如何用随机截距交叉滞后模型(RI-CLPM)分析心理学纵向数据?

Mplus实战&#xff1a;随机截距交叉滞后模型&#xff08;RI-CLPM&#xff09;在心理学纵向研究中的深度应用 心理学研究中&#xff0c;我们常常需要探索变量间的动态相互作用——比如焦虑和睡眠问题如何相互影响&#xff1f;传统交叉滞后模型&#xff08;CLPM&#xff09;虽然广…...

uniapp定位踩坑记:腾讯地图误差1km?高德地图精准配置全攻略

Uniapp定位精度优化实战&#xff1a;从腾讯地图1km误差到高德厘米级精准配置 最近在开发一款外卖配送类应用时&#xff0c;我被定位精度问题折磨得够呛。原本以为接入腾讯地图SDK就能轻松搞定&#xff0c;结果实测发现定位偏差经常达到800米以上——这对于需要精确到楼栋的外卖…...

基于springboot的中医院问诊知识科普系统的设计与实现-vue

目录系统架构设计前端技术选型模块划分关键技术实现开发阶段规划部署方案项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统架构设计 采用前后端分离架构&#xff0c;前端使用Vue.js框架&#xff0c;后端基于SpringBoot构建R…...

UE5 UI控件实战指南 —— 从基础到高级交互设计

1. UE5 UI控件基础入门 第一次打开UE5的UMG编辑器时&#xff0c;看到琳琅满目的控件面板可能会有点懵。别担心&#xff0c;我们先从最基础的Image和Text控件开始&#xff0c;就像学画画先从线条练起一样。 Image控件相当于你的画布。我习惯先在内容浏览器里右键创建"用户界…...

Mermaid在线编辑器完整指南:3步制作专业图表零基础入门

Mermaid在线编辑器完整指南&#xff1a;3步制作专业图表零基础入门 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-edito…...

利用快马ai快速生成流水线plc控制逻辑原型,无硬件也能验证思路

最近在做一个自动化流水线的小项目&#xff0c;需要设计PLC控制逻辑。传统方式需要先搭建硬件环境才能调试&#xff0c;但通过InsCode(快马)平台的AI辅助&#xff0c;我实现了无硬件环境下的快速原型验证&#xff0c;分享下这个实用经验。 项目背景与需求分析 这个流水线控制系…...

智能突破2048:AI助手如何让数字合成不再依赖运气

智能突破2048&#xff1a;AI助手如何让数字合成不再依赖运气 【免费下载链接】2048-ai AI for the 2048 game 项目地址: https://gitcode.com/gh_mirrors/20/2048-ai 你是否曾在2048游戏中陷入数字迷宫&#xff1f;眼看着屏幕上散落的方块无从下手&#xff0c;移动一步就…...

当地的美国展会搭建制作公司口碑排行

随着中国企业出海参展日益频繁&#xff0c;选择一家可靠的美国本土搭建商成为关键决策。许多企业主发现&#xff0c;直接对接海外供应商时&#xff0c;常面临沟通不畅、报价模糊、落地效果与设计图相差甚远等问题。这背后&#xff0c;是原有依赖单一信息渠道或熟人推荐的模式正…...

RT-Thread Nano 3.0.3移植STM32F103后,第一个实战:用FinSH组件实现串口命令行调试

RT-Thread Nano 3.0.3移植STM32F103实战&#xff1a;FinSH组件实现串口命令行调试 当你成功将RT-Thread Nano移植到STM32F103开发板后&#xff0c;第一个令人兴奋的里程碑就是让系统真正"活"起来——而FinSH组件正是实现这一目标的完美起点。这个内置的命令行交互工具…...

OpenClaw+Qwen3.5-4B-Claude:个人知识库自动更新系统

OpenClawQwen3.5-4B-Claude&#xff1a;个人知识库自动更新系统 1. 为什么需要自动化知识管理 作为一个技术从业者&#xff0c;我每天都会接触到大量信息——技术博客、论文摘要、行业动态、代码库更新等等。过去三年里&#xff0c;我尝试过各种笔记工具和知识管理方法&#…...